我试图在 $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(使用前将#替换为@)