在mongo聚合后,我可以将一个文档与另一个匹配关键字上的文档合并吗



假设我运行一个Mongo聚合查询并得到一个结果集,其中包含表单中的文档

{ user_id : 1234, value : 678 } 

是否可以从聚合查询中获取返回的文档,并将user_id与用户集合中的文档匹配,然后合并结果。即将上述文档与用户记录与表单、相匹配

{_id : 1234, name : bob knight, email : bob@bob }

并返回

{_id : 1234, name : bob knight, email : bob@bob, value : 678 }

假设每个用户有一个值文档,或者如果有多个值文档的话,你想添加它们,你可以这样做:

db.collection.aggregate(
     {$project:{user_id:{$ifNull:["$user_id","$_id"]}, email:1,name:1,value:1}},
     {$group:{_id:"$user_id",name:{$max:"$name"}, email:{$max:"$email"},value:{$sum:"$value"}}}
)

$project需要将user_id字段添加到id为的文档中,因此需要$ifNull。$group只是对它们进行分组,求和值有效,因为null为0,$max适用于其他字段,因为任何值都>null。

相关内容

  • 没有找到相关文章

最新更新