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

问题描述 投票:1回答:1

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

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

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

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

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

[我想做的是,根据导演姓名对我的电影进行过滤。理想的查询如下所示:

db.Movies.Find({"Director.Name : "Sam"})
mongodb shell
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.