如何结合使用$group与$lookup聚合操作查询书籍关联的出版社列表
正确聚合查询语句
db.books.aggregate([ // 拆分每本书的publisher数组,生成单条出版社id对应的记录 { $unwind: "$publisher" }, // 对出版社id做去重处理,避免重复关联查询 { $group: { _id: "$publisher" } }, // 关联publisher集合,匹配对应出版社的详情信息 { $lookup: { from: "publisher", localField: "_id", foreignField: "id", as: "publisherInfo" } }, // 拆分关联得到的出版社数组(单id对应唯一出版社,数组仅包含一个元素) { $unwind: "$publisherInfo" }, // 将出版社详情对象提升为根文档,直接输出目标格式 { $replaceRoot: { newRoot: "$publisherInfo" } } ])
你原来的写法执行后,出版社详情都包裹在publishers数组中,还保留了分组生成的_id字段,补充最后两步处理就能得到你需要的输出格式。
内容的提问来源于stack exchange,提问作者Sufail Kalathil
相关产品推荐
相关产品推荐

