有两个集合:
A集合中存"用户信息";
B集合中存"文章";
B集合中每篇文章都有一个评论字段如下:
1 2 3 4 5 6 7 8 9 10 | comment:[{ uid:"59ffd1966e39780ae3fd99c3", message:'评论内容' },{ uid:"59ffd269fbcba4346517c098", message:'评论内容' },{ uid:"59ffd278fbcba4346517c099", message:'评论内容' }] |
如何在查询文章评论时,通过uid来关联A集合中的用户信息,希望返回结果如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | comment:[{ username:"用户姓名", ...... message:'评论内容' },{ username:"用户姓名", ...... message:'评论内容' },{ username:"用户姓名", ...... message:'评论内容' }] |
不希望在B集合中插入数据时,将A集合的数据查出再插入,这样存在数据冗余。。。。;
B集合中只放用户ID,不放其他任何用户信息。
翻阅MONGODB MANUAL没有找到。。。。
1 2 3 4 5 6 7 8 9 10 11 12 13 | db.b.aggregate([ {$unwind: "$comment"}, { $lookup: { from: "A", localField: "comment.uid", foreignField: "uid", as: "guest" } }, {$group : {_id:"$title",comments:{$push:"$comment"}} ]); |
返回结果其实只有 title和comments,其他相关字段都没了。。。。
求解!