Monk / Mongodb 在另一个查找的回调中执行查找

Monk / Mongodb performing find inside callback of another find

我有以下文档结构来记录用户的好友列表:

{ 
    "_id" : ObjectId("5df4d0ac6480078812e7b2ff"), 
    "name" : "Alice"
    "friends" : [ "Bob", "John" ] 
}

当收到用户请求时,比如 "Alice",我想检索 Alice 的朋友以及他们的 _id 字段,返回朋友姓名数组的响应和他们的_id,例如

[{"name": "Bob", "_id": "abcdef"}, {"name": "John", "_id": "ghjikl"}

如何在 Monk 中执行此操作?

我的想法是对用户使用 collection.find() 来检索好友列表,然后循环执行另一个 find() 来获取他们的 _id。但这不起作用,因为我无法从嵌套 find() 回调函数外部更新变量。

这个 aggregation 会给你接近你想要的东西:

db.users.aggregate([
  {
    "$match": {
      "name": "Alice"
    }
  },
  {
    "$lookup": {
      "from": "users",
      "as": "friends",
      "localField": "friends",
      "foreignField": "name"
    }
  },
  {
    "$project": {
      "_id": 0,
      "friends._id": 1,
      "friends.name": 1,

    }
  }
])

输出:

[
  {
    "friends": [
      {
        "_id": "abcdef",
        "name": "Bob"
      },
      {
        "_id": "ghjikl",
        "name": "John"
      }
    ]
  }
]