首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mongodb中Group by数组元素

在MongoDB中,您可以使用聚合框架(Aggregation Framework)来对数组元素进行分组

假设您有一个名为orders的集合,其中包含以下文档:

代码语言:javascript
复制
[
  { "_id": 1, "customer": "John", "items": ["apple", "banana", "orange"] },
  { "_id": 2, "customer": "John", "items": ["apple", "banana"] },
  { "_id": 3, "customer": "Jane", "items": ["apple", "orange"] },
  { "_id": 4, "customer": "John", "items": ["banana", "orange"] }
]

现在,您想按customer字段对items数组中的元素进行分组。您可以使用以下聚合查询:

代码语言:javascript
复制
db.orders.aggregate([
  { $unwind: "$items" },
  { $group: {
    _id: { customer: "$customer", item: "$items" },
    count: { $sum: 1 }
  }},
  { $group: {
    _id: "$_id.customer",
    items: { $push: { item: "$_id.item", count: "$count" } },
    totalCount: { $sum: "$count" }
  }}
])

查询的第一个$group阶段会按customeritems字段进行分组,并计算每个组的文档数量。它会推送一个包含itemcount字段的对象到items字段。第二个$group阶段会按customer字段进行分组,并将先前推送的items字段归总为一个新的数组。

查询结果将如下所示:

代码语言:javascript
复制
[
  {
    "_id": "John",
    "items": [
      { "item": "apple", "count": 2 },
      { "item": "banana", "count": 2 },
      { "item": "orange", "count": 2 }
    ],
    "totalCount": 6
  },
  {
    "_id": "Jane",
    "items": [
      { "item": "apple", "count": 1 },
      { "item": "orange", "count": 1 }
    ],
    "totalCount": 2
  }
]

这个结果显示了每个客户购买的商品数量,按项目分类。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

8分33秒

22-删除数组元素

4分59秒

23-获取数组某些元素

1分49秒

097_尚硅谷_Scala_集合(二)_数组(二)_可变数组(二)_访问数组元素

1分43秒

C语言 | 用指向元素的指针变量输出二维数组元素的值

13分3秒

day07_数组/07-尚硅谷-Java语言基础-算法:数组元素的赋值

9分21秒

day07_数组/11-尚硅谷-Java语言基础-算法:数组元素的反转

13分3秒

day07_数组/07-尚硅谷-Java语言基础-算法:数组元素的赋值

9分21秒

day07_数组/11-尚硅谷-Java语言基础-算法:数组元素的反转

13分3秒

day07_数组/07-尚硅谷-Java语言基础-算法:数组元素的赋值

9分21秒

day07_数组/11-尚硅谷-Java语言基础-算法:数组元素的反转

3分8秒

099_尚硅谷_Scala_集合(二)_数组(二)_可变数组(四)_删除元素

14分11秒

JavaSE进阶-084-二维数组的元素访问

领券