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