我有一个只有ObjectID的对象数组,想在一个集合中搜索所有具有这些ID的文档。
var array = [{ _id: 5551e59be360594cd3319644 },
{ _id: 5551e59be360594cd3319631 },
{ _id: 5551e59be360594cd33195d2 },
{ _id: 5551e59be360594cd3319627 }];
Run Code Online (Sandbox Code Playgroud)
这是我目前正在执行的操作以获得结果:
for (var i = 0; i < array.length; i++) {
db.collection('test').findOne({_id:array[i]._id}, function(err, matched) {
console.log(matched);
});
Run Code Online (Sandbox Code Playgroud)
我尝试与$in操作员合作,但没有成功,因为它不是ID数组,而是其中包含这些ID的对象数组。
还有一种方法可以只对一个数据库查询执行此操作,因为我认为在for循环中执行这么多的数据库查询不是一个好主意。
编辑 我现在尝试使用map方法(就像@chrisdam解释的那样),所以我有一个ID数组,但是当我将其传递给find方法时,我得到了以下结果:
EDIT2
别介意我的第一次编辑。find()仅返回游标,而不返回文档本身。所以我习惯了toArray()。感谢您的帮助@chrisdam !!
{ db:
{ domain: null,
_events: {},
_maxListeners: undefined,
databaseName: 'test',
serverConfig: {
domain: null,
_events: {},
_maxListeners: undefined,
auth: [Getter],
_callBackStore: [Object],
_commandsStore: [Object],
_dbStore: [Object],
host: 'localhost',
port: …Run Code Online (Sandbox Code Playgroud)