如何在mongodb聚合框架中的管道阶段后加入文档
Posted
技术标签:
【中文标题】如何在mongodb聚合框架中的管道阶段后加入文档【英文标题】:How to join documents after a pipeline stage in mongo aggregation framwork 【发布时间】:2016-01-06 06:47:41 【问题描述】:所以可以说在第一阶段聚合之后,我按中心对所有文档进行了分组,所以我有这样的东西:
center:"A",
gender:"Male",
count:50
center:"A",
gender:"Female",
count:20
我想加入这两个文档,使最终文档看起来像
center:A,
Male:50,
Female:20
【问题讨论】:
您能否提供示例文档以及您到目前为止所做的尝试? 提供您的原始架构,有可能一步到位。 【参考方案1】:引入另一个 $group
管道步骤,您可以按中心字段对传入文档流进行分组,在组中引入使用 $sum
运算符的新字段。 $sum
操作将由使用 $cond
运算符的条件确定,该运算符评估性别表达式,并根据结果,并根据结果返回先前的计数评估的逻辑。
考虑以下管道延续:
db.collection.aggregate([
/* previous pipeline(s) here ... */
"$group":
"_id": "$center",
"Male":
"$sum":
"$cond": [ "$eq": [ "$gender", "Male" ] , "$count", 0 ]
,
"Female":
"$sum":
"$cond": [ "$eq": [ "$gender", "Female" ] , "$count", 0 ]
,
"$project":
"_id": 0, "center": "$_id", "Male": 1, "Female": 1
])
【讨论】:
以上是关于如何在mongodb聚合框架中的管道阶段后加入文档的主要内容,如果未能解决你的问题,请参考以下文章