小编ans*_*dig的帖子

mongodb:在集合中搜索对象数组中的所有ID

我有一个只有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)

arrays search mongodb

2
推荐指数
1
解决办法
2442
查看次数

标签 统计

arrays ×1

mongodb ×1

search ×1