MongoDB按字段查询:获取tweets集合中去重的用户ID及对应名称
MongoDB查询语句解决方案
你可以直接使用如下聚合查询实现需求:
db.tweets.aggregate([ { $group: { _id: "$user.id", userName: { $first: "$user.name" } } }, { $replaceRoot: { newRoot: { $arrayToObject: [[{ k: "$_id", v: "$userName" }]] } } } ])
语句说明
- 第一个
$group阶段以user.id为分组依据,自动对所有用户去重,由于你的场景中同一个用户ID对应唯一的用户名,所以用$first取分组内任意一条记录的用户名即可,替换为$last也能得到相同结果。 - 第二个
$replaceRoot阶段调整输出结构,通过$arrayToObject将用户ID设为对象的键、用户名称设为对应值,完全匹配你需要的返回格式。
内容的提问来源于stack exchange,提问作者carlos de la morena
相关产品推荐
相关产品推荐

