MongoDB tìm và nhóm

Trả về một giá trị từ tài liệu đầu tiên cho mỗi nhóm. Thứ tự chỉ được xác định nếu các tài liệu theo một thứ tự xác định

Chỉ có ở giai đoạn $group .

$ cuối cùng

Trả về một giá trị từ tài liệu cuối cùng cho mỗi nhóm. Thứ tự chỉ được xác định nếu các tài liệu theo một thứ tự xác định

Chỉ có ở giai đoạn $group .

tối đa $

Trả về giá trị biểu thức cao nhất cho mỗi nhóm

在 3. 2 版更改. Có sẵn trong cả $group$project stages.

$min

Trả về giá trị biểu thức thấp nhất cho mỗi nhóm

在 3. 2 版更改. Có sẵn trong cả $group$project stages.

đẩy $

Trả về một mảng các giá trị biểu thức cho mỗi nhóm

Chỉ có ở giai đoạn $group .

$addToSet

Trả về một mảng các giá trị biểu thức duy nhất cho mỗi nhóm. Thứ tự của các phần tử mảng không được xác định

Chỉ có ở giai đoạn $group .

$stdDevPop

Trả về độ lệch chuẩn tổng thể của các giá trị đầu vào

在 3. 2 版更改. Có sẵn trong cả $group$project stages.

$stdDevSamp

Trả về độ lệch chuẩn mẫu của các giá trị đầu vào

在 3. 2 版更改. Có sẵn trong cả $group$project stages.

$group Toán tử và bộ nhớ¶

Giai đoạn $group có giới hạn RAM là 100 megabyte. Theo mặc định, nếu giai đoạn vượt quá giới hạn này, $group sẽ tạo ra lỗi. Tuy nhiên, để cho phép xử lý các tập dữ liệu lớn, hãy đặt tùy chọn allowDiskUse thành true to enable $group operations to write to temporary files. See db. thu thập. phương thức tổng hợp() và lệnh aggregate để biết chi tiết.

在 2. 6 版更改. MongoDB giới thiệu giới hạn 100 megabyte RAM cho giai đoạn $group cũng như allowDiskUse option to handle operations for large datasets.

Ví dụ¶

Tính Đếm, Tổng và Trung bình¶

Cho một bộ sưu tập bán hàng với các tài liệu sau.

{ "_id" : 1, "item" : "abc", "price" : 10, "quantity" : 2, "date" : ISODate("2014-03-01T08:00:00Z") }
{ "_id" : 2, "item" : "jkl", "price" : 20, "quantity" : 1, "date" : ISODate("2014-03-01T09:00:00Z") }
{ "_id" : 3, "item" : "xyz", "price" : 5, "quantity" : 10, "date" : ISODate("2014-03-15T09:00:00Z") }
{ "_id" : 4, "item" : "xyz", "price" : 5, "quantity" : 20, "date" : ISODate("2014-04-04T11:21:39.736Z") }
{ "_id" : 5, "item" : "abc", "price" : 10, "quantity" : 10, "date" : ISODate("2014-04-04T21:23:13.331Z") }

Nhóm theo Tháng, Ngày và Năm¶

Thao tác tổng hợp sau đây sử dụng giai đoạn $group để nhóm các tài liệu theo tháng, ngày và năm, đồng thời tính tổng giá và .

db.sales.aggregate(
   [
      {
        $group : {
           _id : { month: { $month: "$date" }, day: { $dayOfMonth: "$date" }, year: { $year: "$date" } },
           totalPrice: { $sum: { $multiply: [ "$price", "$quantity" ] } },
           averageQuantity: { $avg: "$quantity" },
           count: { $sum: 1 }
        }
      }
   ]
)

Hoạt động trả về kết quả sau

{ "_id" : { "month" : 3, "day" : 15, "year" : 2014 }, "totalPrice" : 50, "averageQuantity" : 10, "count" : 1 }
{ "_id" : { "month" : 4, "day" : 4, "year" : 2014 }, "totalPrice" : 200, "averageQuantity" : 15, "count" : 2 }
{ "_id" : { "month" : 3, "day" : 1, "year" : 2014 }, "totalPrice" : 40, "averageQuantity" : 1.5, "count" : 2 }

Nhóm theo null

Thao tác tổng hợp sau đây chỉ định một nhóm _id của null, calculating the total price and the average quantity as well as counts for all documents in the collection:

db.sales.aggregate(
   [
      {
        $group : {
           _id : null,
           totalPrice: { $sum: { $multiply: [ "$price", "$quantity" ] } },
           averageQuantity: { $avg: "$quantity" },
           count: { $sum: 1 }
        }
      }
   ]
)

Hoạt động trả về kết quả sau

{ "_id" : null, "totalPrice" : 290, "averageQuantity" : 8.6, "count" : 5 }

Truy xuất các giá trị riêng biệt¶

Cho một bộ sưu tập bán hàng với các tài liệu sau.

{ "_id" : 1, "item" : "abc", "price" : 10, "quantity" : 2, "date" : ISODate("2014-03-01T08:00:00Z") }
{ "_id" : 2, "item" : "jkl", "price" : 20, "quantity" : 1, "date" : ISODate("2014-03-01T09:00:00Z") }
{ "_id" : 3, "item" : "xyz", "price" : 5, "quantity" : 10, "date" : ISODate("2014-03-15T09:00:00Z") }
{ "_id" : 4, "item" : "xyz", "price" : 5, "quantity" : 20, "date" : ISODate("2014-04-04T11:21:39.736Z") }
{ "_id" : 5, "item" : "abc", "price" : 10, "quantity" : 10, "date" : ISODate("2014-04-04T21:23:13.331Z") }

Thao tác tổng hợp sau đây sử dụng giai đoạn $group để nhóm các tài liệu theo mục nhằm truy xuất các giá trị mục riêng biệt.

db.sales.aggregate( [ { $group : { _id : "$item" } } ] )

Hoạt động trả về kết quả sau

{ "_id" : "xyz" }
{ "_id" : "jkl" }
{ "_id" : "abc" }

Dữ liệu xoay vòng¶

Một bộ sưu tập sách chứa các tài liệu sau.

________số 8

Nhóm tiêu đề của tác giả

Thao tác tổng hợp sau xoay vòng dữ liệu trong bộ sưu tập sách để có các tên sách được nhóm theo tác giả.

{ "_id" : 1, "item" : "abc", "price" : 10, "quantity" : 2, "date" : ISODate("2014-03-01T08:00:00Z") }
{ "_id" : 2, "item" : "jkl", "price" : 20, "quantity" : 1, "date" : ISODate("2014-03-01T09:00:00Z") }
{ "_id" : 3, "item" : "xyz", "price" : 5, "quantity" : 10, "date" : ISODate("2014-03-15T09:00:00Z") }
{ "_id" : 4, "item" : "xyz", "price" : 5, "quantity" : 20, "date" : ISODate("2014-04-04T11:21:39.736Z") }
{ "_id" : 5, "item" : "abc", "price" : 10, "quantity" : 10, "date" : ISODate("2014-04-04T21:23:13.331Z") }
0

Hoạt động trả về các tài liệu sau

{ "_id" : 1, "item" : "abc", "price" : 10, "quantity" : 2, "date" : ISODate("2014-03-01T08:00:00Z") }
{ "_id" : 2, "item" : "jkl", "price" : 20, "quantity" : 1, "date" : ISODate("2014-03-01T09:00:00Z") }
{ "_id" : 3, "item" : "xyz", "price" : 5, "quantity" : 10, "date" : ISODate("2014-03-15T09:00:00Z") }
{ "_id" : 4, "item" : "xyz", "price" : 5, "quantity" : 20, "date" : ISODate("2014-04-04T11:21:39.736Z") }
{ "_id" : 5, "item" : "abc", "price" : 10, "quantity" : 10, "date" : ISODate("2014-04-04T21:23:13.331Z") }
1

Nhóm tài liệu của tác giả

Thao tác tổng hợp sau đây sử dụng biến hệ thống $$ROOT để nhóm các tài liệu theo tác giả. Tài liệu kết quả không được vượt quá giới hạn BSON Tài liệu Kích thước .

{ "_id" : 1, "item" : "abc", "price" : 10, "quantity" : 2, "date" : ISODate("2014-03-01T08:00:00Z") }
{ "_id" : 2, "item" : "jkl", "price" : 20, "quantity" : 1, "date" : ISODate("2014-03-01T09:00:00Z") }
{ "_id" : 3, "item" : "xyz", "price" : 5, "quantity" : 10, "date" : ISODate("2014-03-15T09:00:00Z") }
{ "_id" : 4, "item" : "xyz", "price" : 5, "quantity" : 20, "date" : ISODate("2014-04-04T11:21:39.736Z") }
{ "_id" : 5, "item" : "abc", "price" : 10, "quantity" : 10, "date" : ISODate("2014-04-04T21:23:13.331Z") }
2

Hoạt động trả về các tài liệu sau

{ "_id" : 1, "item" : "abc", "price" : 10, "quantity" : 2, "date" : ISODate("2014-03-01T08:00:00Z") }
{ "_id" : 2, "item" : "jkl", "price" : 20, "quantity" : 1, "date" : ISODate("2014-03-01T09:00:00Z") }
{ "_id" : 3, "item" : "xyz", "price" : 5, "quantity" : 10, "date" : ISODate("2014-03-15T09:00:00Z") }
{ "_id" : 4, "item" : "xyz", "price" : 5, "quantity" : 20, "date" : ISODate("2014-04-04T11:21:39.736Z") }
{ "_id" : 5, "item" : "abc", "price" : 10, "quantity" : 10, "date" : ISODate("2014-04-04T21:23:13.331Z") }
3

参见

The 邮政编码数据集的聚合 tutorial provides an extensive example of the $group operator in a common use case.

Tài nguyên bổ sung¶

  • Phân tích MongoDB. Tìm hiểu tổng hợp bằng ví dụ. Phân tích khám phá và trực quan hóa bằng dữ liệu chuyến bay
  • MongoDB cho dữ liệu chuỗi thời gian. Phân tích dữ liệu chuỗi thời gian bằng Khung tổng hợp và Hadoop
  • Khung tổng hợp
  • Hội thảo trực tuyến. Khám phá Khung tổng hợp
  • Thẻ tham khảo nhanh

←   $unwind (tập hợp) $sample (tập hợp)  →

© MongoDB, Inc 2008-2017. MongoDB, Mongo và logo chiếc lá là các nhãn hiệu đã đăng ký của MongoDB, Inc