2017-01-03 55 views
1

我有這樣的MongoDB的查詢彙總查詢:如何執行與WHERE條件

var array=[]; //some string values 

collection.aggregate(
    { $match: { '_id': { $in : array } } } 
) 

但這並不返回任何結果。我如何執行此操作?

+1

你缺少括號。正確的語法是collection.aggregate([{$ match:{'_id':{$ in:array}}}])。有關詳細信息,請參見https://docs.mongodb.com/v3.2/aggregation/ – felix

+1

使用ObjectID值代替 – Sammaye

+0

它不能與[] – arunraj414

回答

0

正如在評論中指出,您的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;); 
+0

thnks它的作品! – arunraj414