查询对存储在文档mongoDB中的对象的引用

时间:2019-09-25 02:17:40

标签: mongodb shell

我想知道如何使用MongoDB构建查询以基于文档中存储的文档的属性进行过滤。

示例: 我的第一个收藏集叫做电影,它的文档如下:

_id: ObjectID("5d872b7f927f2538e4eefbf5")   
mvNumb : "1"
Director : ObjectID("5d8abd243372eb2850ad71e7")

第二个集合称为Director,Director具有以下字段:

_id: ObjectID("5d8abd243372eb2850ad71e7")
Name : "Sam"

我想做的是根据导演姓名过滤我的电影。理想的查询如下:

db.Movies.Find({"Director.Name : "Sam"})

1 个答案:

答案 0 :(得分:0)

尝试;

db.directors.aggregate([
  {
    $match: {
      Name: "Sam"
    }
  },
  {
    $lookup: {
      from: "movies",
      localField: "_id",
      foreignField: "Director",
      as: "movies"
    }
  },
  {
    $project: {
      _id: 0,
      movies: 1
    }
  }
])

您可以先使用Name$match获得目标导演。然后使用$lookup找到导演所属的电影,该电影本质上是一个类似联接的操作,该操作将提取所有此类电影并将其放在movies字段下。然后只投影那些字段。

检查mongoplayground