查找链接文档属性等于值的 mongodb 文档

Dav*_*lor 5 mongodb

我有一个 MongoDb 文档,它链接到另一个集合中的另一个文档。

集合A就像

{ _id: ..., contact_id: ObjectId('1234') }

联系人集合类似:

{ _id: ObjectId('1234'), name: 'Joe' }

我正在尝试查找链接联系人姓名为“Joe”的所有 A 文档

我不知道你会怎么做。

Dou*_*ise 6

您可以使用@johnnyhk 回答后在 MongoDB v3.2 中引入的聚合查找来完成此操作。

db.A.aggregate(
  [
    {
      $lookup: {
        localField: "contact_id",
        from: "Contacts",
        foreignField: "_id",
        as: "contact"
      }
    },
    {
      $match: {
        "contact.name": "Joe"
      }
    }
  ]
)
Run Code Online (Sandbox Code Playgroud)


Joh*_*yHK 2

您无法在单个查询中执行此操作,因为 MongoDB 不支持联接。相反,您必须将其分为两个查询:第一个查询获取_idJoe 的信息,第二个查询获取他的A文档。我不确定你使用的是什么语言,但在 shell 中:

db.A.find({contact_id: db.contacts.findOne({name: 'Joe'})._id});
Run Code Online (Sandbox Code Playgroud)