MongoDB中Lookup关联查询返回错误结果问题排查
MongoDB Lookup关联查询错误分析与修正
你的$lookup查询参数完全搞反了,还写错了字段名,这才导致返回所有用户数据。
错误原因拆解
localField: "id":user_posts集合里存储用户ID的字段是user_id,根本没有id这个字段;foreignField: "user_id":users集合里的主键是_id,不存在user_id字段;- 因为两个关联字段都不匹配,MongoDB无法找到有效的关联条件,所以会返回
users集合的所有文档,最终每个帖子的user_info都包含两个用户。
正确的聚合查询
db.user_posts.aggregate([ { $lookup: { from: "users", localField: "user_id", // user_posts中关联用户的字段 foreignField: "_id", // users中对应的主键字段 as: "user_info" } } ]).pretty();
修正后的逻辑
这个查询会将user_posts里的user_id与users里的_id进行匹配,每个帖子只会关联到所属的用户kunal,user_info数组里只会返回对应的一条用户数据。
内容的提问来源于stack exchange,提问作者kunal
相关产品推荐
相关产品推荐

