我应该聚合合并两个集合吗?

Should i aggregate to merge two collection?

我是 MongoDB 和 NoSQL 的新手,我正在做一个包含 2 个集合的简单应用程序 tasks_listuser,这样的结构

tasks_list

{
    "_id" : ObjectId("61c03dfb47370c024193afde"),
    "name" : "complete unit 2",
    "createBy" : ObjectId("61c03f6b47370c024193afe0")
}

用户

{
    "_id" : ObjectId("61c03f6b47370c024193afe0"),
    "name" : "admin",
    "image" : "img_default.jpg"
}

我想获取task_list的文档,所以我想我应该调用find() 2 collection tasks_list users 或使用聚合加入集合并在 tasks_list 中使用 find()。什么是正确的方法?

您可以使用aggregate()查询:

db.tasks_list.aggregate([
  {
    "$lookup": {
      "from": "users",
      "localField": "createBy",
      "foreignField": "_id",
      "as": "createBy"
    }
  },
  {
    "$set": {
      "createBy": {
        "$first": "$createBy"
      }
    }
  }
])

Working example

如果你使用的是Mongoose,你可以使用populate()方法:

TaskLists.find().populate('createBy');