1
我有这样的MongoDB的查询汇总查询:如何执行与WHERE条件
var array=[]; //some string values
collection.aggregate(
{ $match: { '_id': { $in : array } } }
)
但这并不返回任何结果。我如何执行此操作?
我有这样的MongoDB的查询汇总查询:如何执行与WHERE条件
var array=[]; //some string values
collection.aggregate(
{ $match: { '_id': { $in : array } } }
)
但这并不返回任何结果。我如何执行此操作?
正如在评论中指出,您的array
变量是十六进制字符串数组值ex :["57f36e94517f72bc09ee761e"]
和蒙戈贝壳,你需要先投那些字符串值ObjectId
秒。使用JavaScript map()
方法来完成列表中的投射。
例如:然后可以将查询中使用聚合函数如以下
db.collection.aggregate([
{ "$match": { "_id": { "$in" : ids } } }
])
上面
蒙戈壳
var array = ["585808969e39db5196444c07", "585808969e39db5196444c06"];
var ids = array.map(function(id){ return ObjectId(id); });
是基本上相同
db.collection.find({ "_id": { "$in": ids } })
Node.js的
var {ObjectId} = require('mongodb'); // or ObjectID
var ids = array.map(id => ObjectId.isValid(id) ? new ObjectId(id) : null;);
thnks它的作品! – arunraj414
你缺少括号。正确的语法是collection.aggregate([{$ match:{'_id':{$ in:array}}}])。有关详细信息,请参见https://docs.mongodb.com/v3.2/aggregation/ – felix
使用ObjectID值代替 – Sammaye
它不能与[] – arunraj414