我想知道如何精确地建立查询以使用MongoDB基于文档中存储文档的属性进行过滤。
实施例:我的第一个收藏集叫做电影,它的文档如下:
_id: ObjectID("5d872b7f927f2538e4eefbf5")
mvNumb : "1"
Director : ObjectID("5d8abd243372eb2850ad71e7")
第二个集合称为Director,Director具有以下字段:
_id: ObjectID("5d8abd243372eb2850ad71e7")
Name : "Sam"
[我想做的是,根据导演姓名对我的电影进行过滤。理想的查询如下所示:
db.Movies.Find({"Director.Name : "Sam"})
尝试;
db.directors.aggregate([
{
$match: {
Name: "Sam"
}
},
{
$lookup: {
from: "movies",
localField: "_id",
foreignField: "Director",
as: "movies"
}
},
{
$project: {
_id: 0,
movies: 1
}
}
])
您首先可以使用Name
使用$match
获得目标导演。然后,使用$lookup
查找导演所属的电影,该电影本质上是一种类似联接的操作,该操作将提取所有此类电影并将其放在movies
字段下。然后仅投影这些字段。