如何在MongoDB中查询director字段值相同的所有文档并返回完整明细
MongoDB多作品导演的完整影片明细查询方案
你当前的聚合语句仅统计了每个导演的作品数量,没有保留原始影片文档信息,修改聚合管道即可得到符合要求的结果,完整查询语句如下:
db.movies.aggregate([ { $group: { _id: "$director", movie_list: { $push: "$$ROOT" }, work_count: { $sum: 1 } } }, { $match: { work_count: { $gt: 1 } } }, { $unwind: "$movie_list" }, { $replaceRoot: { newRoot: "$movie_list" } } ])
各阶段逻辑说明:
$group阶段:按导演字段分组,用MongoDB内置的$$ROOT变量将每条原始影片文档存入movie_list数组,同时统计该导演的作品总数$match阶段:过滤出作品数大于1的导演,排除仅产出1部作品的导演记录$unwind阶段:将每个导演对应的movie_list数组展开为多条独立记录,每条记录对应一部影片$replaceRoot阶段:将movie_list字段存储的原始影片文档设置为输出的根节点,直接返回完整的影片明细
运行上述语句后,输出结果和你给出的预期完全一致,会自动过滤掉导演D2的单条作品,仅保留D1、D3对应的所有影片记录。
内容的提问来源于stack exchange,提问作者Vishnu Mohan
相关产品推荐
相关产品推荐

