mongodb node.js查找具有多个Ids的文档

时间:2016-05-14 03:58:46

标签: node.js mongodb mongoskin

我有一个包含mongodb集合ID的数组

array = [ '573163a52abda310151e5791',
         '57358e5dbd2f8b960aecfa8c',
         '573163da2abda310151e5792' ]

像这样,在我的nodejs代码中我想找到所有这些ID的文档。我正在使用的包是mongoskin。

根据文档,这是找到结果的正确方法,它给了我想要的东西。但是这里不是直接值,而是我想使用数组,但无法找到如何做到这一点

   db.coll.find({
                _id: {
                    $in: [mongoskin.helper.toObjectID("573163da2abda310151e5792"),
                          mongoskin.helper.toObjectID("57358e5dbd2f8b960aecfa8c"),
                          mongoskin.helper.toObjectID("573163a52abda310151e5791")
                    ]
                }
            }).toArray(function(err, docs) {
                console.log(docs);
                res.send(docs)
            });

2 个答案:

答案 0 :(得分:3)

我对mongoskin了解不多,但你可以试试这个......

var newArray = oldArray.map(function(ele) {
  return mongoskin.helper.toObjectID(ele);
});
OR
var newArray = oldArray.map(mongoskin.helper.toObjectID(ele));

现在您可以在查询中使用newArray

db.coll.find({
            _id: {
                $in: newArray
            }
        }).toArray(function(err, docs) {
            console.log(docs);
            res.send(docs)
        });

答案 1 :(得分:1)

我认为这对你有用

ObjectID = require('mongoskin').ObjectID;
var array1 = ["5736d1210a39c2547cb9d90e","5736d1380a39c2547cb9d90f]
var array2 = [] 
array1.forEach(function(stringId){
array2.push(new ObjectID(stringId)))
})

然后在查询中使用此array2变量

db.coll.find({
        _id: {
            $in: array2
        }
    }).toArray(function(err, docs) {
        console.log(docs);
        res.send(docs)
    });