如何将 mongo 查找查询的结果添加到另一个查找查询中

How to add result of a mongo find query into another find query

首先,我在 collection:

中搜索所有组文档
const groups = await Content.find({ type: 'group' }).toArray()

对于这个数组,我需要找到每个 children 文档并将它们添加到 object:

groups.map(async g => {
  g.content = await Content.find({
    type: 'element',
    parent: g._id
  }).toArray()

  console.log(g) // <-- has content field, which is what I am expecting
})

console.log(groups) // <-- content field is missing

例子

为了更清楚一点:groups 可能会有这样的结果:

[{
  _id: 'xxnQt5X8pfbcJMn6i',
  title: 'Title',
  type: 'group',
}]

现在我正在搜索具有 parent ID 的所有文档的每个元素(在本例中它只有一个),这个结果应该作为一个字段添加到 group

[{
  _id: 'xxnQt5X8pfbcJMn6i',
  title: 'Title',
  type: 'group',
  content: [
    { _id: '1', title: 'example', parent: 'xxnQt5X8pfbcJMn6i' },
    { _id: '2', title: 'another example', parent: 'xxnQt5X8pfbcJMn6i' }
  ]
}]

在我的尝试中,在 map() 之外执行 console.log 时我没有获得内容。

也许可以直接使用我的 mongoDB 查询(我正在使用 mongoDB native driver

这是您正在寻找的完美案例 Promise.all

var promiseArray = groups.map(g => {
  return Content.find({type: 'element',parent: g._id},function(err,cursor){
       g['content'] = cursor.toArray();
       return g;
  });
})

Promise.all(promiseArray ).then(function(groups) {
    console.log(groups)
})