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

时间:2013-12-28 13:49:05

标签: mongodb

我有一个MongoDb文档,链接到另一个Collection中的另一个。

收藏A就像

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

联系人集合类似于:

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

我正在尝试查找链接联系人姓名为“Joe”

的所有A档案

我无法理解你将如何做到这一点。

2 个答案:

答案 0 :(得分:2)

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

 
db.A.find({contact_id: db.contacts.findOne({name: 'Joe'})._id});

答案 1 :(得分:0)

在@johnnyhk回答后,您可以使用MongoDB v3.2中引入的aggregation lookup进行此操作。

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