我想知道如何使用MongoDB构建查询以基于文档中存储的文档的属性进行过滤。
示例: 我的第一个收藏集叫做电影,它的文档如下:
_id: ObjectID("5d872b7f927f2538e4eefbf5")
mvNumb : "1"
Director : ObjectID("5d8abd243372eb2850ad71e7")
第二个集合称为Director,Director具有以下字段:
_id: ObjectID("5d8abd243372eb2850ad71e7")
Name : "Sam"
我想做的是根据导演姓名过滤我的电影。理想的查询如下:
db.Movies.Find({"Director.Name : "Sam"})
答案 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
字段下。然后只投影那些字段。