【问题标题】:$push with $group in mongo aggregationmongo 聚合中的 $push 和 $group
【发布时间】:2019-05-28 16:22:18
【问题描述】:

我写了这个查询,但它并不完全是我想要的如何使用推送操作符来获得预期的结果- 是否可以通过 addFields 和项目管道使用 push。

db.getCollection("event").aggregate([ {$match:{"name":"Add            
to Cart"}}, {$group:{"_id":"browser",count:{$sum:1}}}]);

输出:

{_id:chrome.count:3}
{_id:firefox,count:1}
{_id:edge,count:1}

预期输出:

{
browser:[
{name:"chrome",count:3},
{name:"firefox",count:1}, 
{name:"egde",count:1}
]
}

我的收藏:

{
_id:1,
 name:"Add to Cart"
"browser":"chrome"
}
{
_id:2,
name:"Searched",
"browser":"chrome"
}
{
_id:3,
name:"Add To Cart",
"browser":"edge"
}
{
_id:4,
name:"Item View",
"browser":"chrome"
}
{
_id:5,
name:"Add To Cart",
"browser":"Firefox"
}

【问题讨论】:

    标签: mongodb mongodb-query aggregation-framework


    【解决方案1】:

    你需要在这里多使用一个$group阶段

    db.collection.aggregate([
      { "$group": {
        "_id": "$browser",
        "count": { "$sum": 1 }
      }},
      { "$group": {
        "_id": null,
        "browser": {
          "$push": {
            "name": "$_id",
            "count": "$count"
          }
        }
      }},
      { "$project": { "_id": 0 }}
    ])
    

    【讨论】:

      猜你喜欢
      • 2015-11-18
      • 2020-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-02
      • 1970-01-01
      • 2016-02-17
      相关资源
      最近更新 更多