我可以在 mongodb 的 $match 聚合函数中使用 $in 吗

2024-03-17

我试图在 $match (聚合)函数中使用 $in 运算符。由于某种原因,它不适用于“_Id”字段,但我找不到任何文档指出 mongodb 不支持此功能。

var ids = ['1', '2', '3', '4'];  //an example. I am using real mongo object ids


// this is working fine
Product.find({_id : {$in : ids}})
 .exec(function(err, res){
  res.json(res);
  });

// no results here
Product.aggregate([
 {$match : {_id : {$in : ids}}},
 {$group : {_id : '$pCode', total : {$sum : '$pWeight'}}])
  .exec(function(err, res){
   res.json(res);

现在,如果我使用其他字段来查询,它可以正常工作,并且使用 $in 可以获得所需的结果。但由于某种原因,这不适用于“_id”字段。


尝试使用

const ObjectId = require("mongodb").ObjectID;

然后像这样转换你的数组:

var ids = [ObjectId('5ae6d812e5504726a69fc285'),ObjectId('5b0bcfc254c93a2734d56efb')];

然后进行聚合。 对于使用 ORM 的聚合,您必须显式地对其进行强制转换。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以在 mongodb 的 $match 聚合函数中使用 $in 吗 的相关文章

随机推荐