使用 MongoDB 从单独集合中的文档聚合多个字段
aggregating multiple fields from documents in separate collections using MongoDB
我使用下面的代码来显示单独集合的两个字段的结果:InfoMovie 和 Rate,将 MID 作为它们之间的公共字段。我想要一个使用 Mongodb 将集合 "InfoMovie" 中的 "Actors" 和集合 "Rate" 中的 "remark" 显示到一个结果集中的结果集。但是当我执行下面的代码时,它只显示 "remark" 的列表但不显示评论的演员姓名。 [注意:集合中的所有演员都不是 remarked.Few 他们都是备注。我们必须只显示评论演员的名字。]
如果有人能解决这个问题,我将不胜感激。先感谢您! :)
db.InfoMovie.aggregate([
{
$lookup:
{
from:"Rate",
localField:"MID",
foreignField:"MID",
as:"ActorsRating"
}
},
{
$project:{"Remark":1,"Actors":1}
}
])
以下是示例文档:
集合 infoMovie 的示例文档:
{
"MID":"1",
"MovieName":"Iron man",
"Actors":"RDJ",
"RDate":"2008",
"Country":"USA",
},
{
"MovieID":"2",
"MovieName":"Dark Knight",
"Actors":"Christian Bail",
"RDate":"2007",
"Country":"USA",
}
我使用的mongod版本是3.4.7。谢谢!
收集率样本文件:
{
"MID":1,
"ReviewedBy":"John",
"Rate":4,
"Date":"10/04/2013",
"remark":"The best Movie ever!",
},
{
"MID":2,
"ReviewedBy":"William",
"Rate":8,
"Date":"19/06/2014",
}
您可以尝试以下聚合
需要使用$filter
聚合来过滤掉Remark
等于undefined的文档。
db.InfoMovie.aggregate([
{ "$lookup": {
"from":"Rate",
"localField":"MID",
"foreignField":"MID",
"as":"ActorsRating"
}},
{ "$project": {
"Actors": 1,
"Remark": {
"$filter": {
"input": "$ActorsRating",
"as": "ac",
"cond": { "$ne": ["$$ac.remark", undefined] }
}
}
}}
])
我使用下面的代码来显示单独集合的两个字段的结果:InfoMovie 和 Rate,将 MID 作为它们之间的公共字段。我想要一个使用 Mongodb 将集合 "InfoMovie" 中的 "Actors" 和集合 "Rate" 中的 "remark" 显示到一个结果集中的结果集。但是当我执行下面的代码时,它只显示 "remark" 的列表但不显示评论的演员姓名。 [注意:集合中的所有演员都不是 remarked.Few 他们都是备注。我们必须只显示评论演员的名字。] 如果有人能解决这个问题,我将不胜感激。先感谢您! :)
db.InfoMovie.aggregate([
{
$lookup:
{
from:"Rate",
localField:"MID",
foreignField:"MID",
as:"ActorsRating"
}
},
{
$project:{"Remark":1,"Actors":1}
}
])
以下是示例文档: 集合 infoMovie 的示例文档:
{
"MID":"1",
"MovieName":"Iron man",
"Actors":"RDJ",
"RDate":"2008",
"Country":"USA",
},
{
"MovieID":"2",
"MovieName":"Dark Knight",
"Actors":"Christian Bail",
"RDate":"2007",
"Country":"USA",
}
我使用的mongod版本是3.4.7。谢谢!
收集率样本文件:
{
"MID":1,
"ReviewedBy":"John",
"Rate":4,
"Date":"10/04/2013",
"remark":"The best Movie ever!",
},
{
"MID":2,
"ReviewedBy":"William",
"Rate":8,
"Date":"19/06/2014",
}
您可以尝试以下聚合
需要使用$filter
聚合来过滤掉Remark
等于undefined的文档。
db.InfoMovie.aggregate([
{ "$lookup": {
"from":"Rate",
"localField":"MID",
"foreignField":"MID",
"as":"ActorsRating"
}},
{ "$project": {
"Actors": 1,
"Remark": {
"$filter": {
"input": "$ActorsRating",
"as": "ac",
"cond": { "$ne": ["$$ac.remark", undefined] }
}
}
}}
])