如何在mongodb中为group by使用聚合

你好,世界

我有包含具有以下架构的文档的集合。

架构

{
    "categoryId": "1234",
    "sellerId": "2323",
    "productId": "121",
    "rating": 1
},
{
    "categoryId": "1235",
    "sellerId": "2323",
    "productId": "122",
    "rating": -1
},
{
    "categoryId": "1234",
    "sellerId": "2323",
    "productId": "123",
    "rating": -1
},
{
    "categoryId": "1235",
    "sellerId": "2323",
    "productId": "124",
    "rating": 1
},
{
    "categoryId": "1234",
    "sellerId": "2323",
    "productId": "125",
    "rating": 1
},
{
    "categoryId": "1234",
    "sellerId": "2325",
    "productId": "125",
    "rating": 1
}

评级可以有值1-1我想找到按categoryId评分和总和分组的所有文档示例结果:

{categoryId: 1234, positiveRatingCount: 2, negativeRatingCount: 1}

这是我到目前为止所做的:

ratingsCollection.aggregate(
    {
        $match: {sellerId: "2323" }
    },
    {

        $group: {
            _id: "$categoryId",
            count: { $sum: "rating" }

        }
    }
);

我得到以下结果。我能够按类别分组,但无法计算出正面和负面评级的数量。

[
    {
        "_id": "1234",
        "count": 3
    },
    {
        "_id": "1235",
        "count": 2
    }
]
阿什

您需要$sum与条件($cond一起使用其中ratingis$gt$ltthen 0

db.collection.aggregate([
  { "$match": { "sellerId": "2323" } },
  { "$group": {
    "_id": "$categoryId",
    "positiveRatingCount": {
      "$sum": { "$cond": [{ "$gt": [ "$rating", 0 ] }, "$rating", 0 ] }
    },
    "negativeRatingCount": {
      "$sum": { "$cond": [{ "$lt": [ "$rating", 0 ] }, "$rating", 0 ] }
    }
  }}
])

输出

[
  {
    "_id": "1235",
    "negativeRatingCount": -1,
    "positiveRatingCount": 1
  },
  {
    "_id": "1234",
    "negativeRatingCount": -2,
    "positiveRatingCount": 3
  }
]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用MongoDB聚合

来自分类Dev

如何在 mongodb 聚合管道中限制 $group 中的文档?

来自分类Dev

如何在mongodb中使用聚合

来自分类Dev

如何在Mongodb中使用$ add聚合?

来自分类Dev

如何在mongodb中查找文档并使用聚合查找属性?

来自分类Dev

如何在MongoDB中同时使用findOne和聚合?

来自分类Dev

使用聚合MongoDB

来自分类Dev

Mongodb聚合框架:$ group是否使用索引?

来自分类Dev

使用group-by的Mongodb聚合查询

来自分类Dev

如何使用mongodb对$ group聚合输出进行排序

来自分类Dev

如何使用mongodb对$ group聚合输出进行排序

来自分类Dev

使用嵌套元素的MongoDB聚合

来自分类Dev

使用NodeJS的MongoDB平均聚合

来自分类Dev

使用嵌套元素的MongoDB聚合

来自分类Dev

使用mongoose与Mongodb进行聚合

来自分类Dev

使用 ObjectId 的 mongodb 聚合查找

来自分类Dev

使用 spring 的 MongoDB 聚合查询

来自分类Dev

如何在mongo聚合中使用$ in或$ nin $ group $ cond

来自分类Dev

如何在Java中使用group by聚合CSV数据?

来自分类Dev

如何在mongodb聚合管道内使用Javascript对象?

来自分类Dev

如何在mongoDB的嵌套数据中使用聚合$ lookup?

来自分类Dev

如何在mongodb $ lookup聚合内使用NOT IN数组条件

来自分类Dev

如何在mongodb聚合管道内使用Javascript对象?

来自分类Dev

如何在Spring Data MongoDB中使用聚合

来自分类Dev

如何在mongoDB中使用聚合获得此结果

来自分类Dev

如何使用聚合将mongodb分组

来自分类Dev

MongoDB如何使用聚合代替以下查询

来自分类Dev

如何使用MongoDB聚合获得总和?

来自分类Dev

MongoDB聚合:如何在MongoDB聚合中应用分页