Nhóm trong mongodb là gì?

Toán tử nhóm $ rất quan trọng trong MongoDB, vì nó giúp thực hiện các phép biến đổi dữ liệu khác nhau. Toán tử $group nhóm dữ liệu tương tự theo một số biểu thức đã chỉ định và nhóm tài liệu cho từng nhóm riêng biệt

Giả sử có 50 sinh viên trong cơ sở dữ liệu và tất cả họ đều yêu thích môn cricket. Nếu chúng ta muốn đếm tất cả các sinh viên yêu thích môn crickê, thì toán tử $group là một giải pháp hay cho nhiệm vụ đó

cú pháp

Điểm quan trọng

  1. _Tôi. Trường này là bắt buộc để nhóm. Nếu bạn chỉ định giá trị của trường _id là null hoặc một hằng số, toán tử $group sẽ tính toàn bộ các giá trị tích lũy cho tất cả các tài liệu đầu vào
  2. đồng ruộng. Đây là trường tùy chọn và được tính bằng toán tử

ví dụ

Trong các ví dụ sau, chúng tôi đang làm việc với

{
        "_id" : A1,
        "item_name" : "Blue box",
        "price" : 10,
        "qty" : 15,
        "date_of_bill" : "13/04/2015"
}
{
        "_id" : A2,
        "item_name" : "Light Red box",
        "price" : 15,
        "qty" : 20,
        "date_of_bill" : "05/12/2014"
}
{
        "_id" : null,
        "item_name" : "Green box",
        "price" : 10,
        "qty" : 30,
        "date_of_bill" : "17/12/2014"
}
{
        "_id" : A3,
        "item_name" : "White box",
        "price" : 8,
        "qty" : 25,
        "date_of_bill" : "07/02/2014"
}
{
        "_id" : A4,
        "item_name" : "Blue box",
        "price" : 15,
        "qty" : 20,
        "date_of_bill" : "13/04/2015"
}
{
        "_id" : A5,
        "item_name" : "Red box",
        "price" : 12,
        "qty" : 10,
        "date_of_bill" : "05/12/2014"
}
{
        "_id" : A6,
        "item_name" : "Black box",
        "price" : 10,
        "qty" : 30,
        "date_of_bill" : "22/04/2020"
}
{
        "_id" : A7,
        "item_name" : "Red box",
        "price" : 8,
        "qty" : 15,
        "date_of_bill" : "05/12/2014"
}
{
        "_id" : A8,
        "item_name" : "Green box",
        "price" : 20,
        "qty" : 10,
        "date_of_bill" : "17/12/2014"
}
{
        "_id" : A9,
        "item_name" : "Green box",
        "price" : 10,
        "qty" : 30,
        "date_of_bill" : "17/12/2014"
}

ví dụ 1. nhóm $

Trong ví dụ này, chúng tôi sẽ nhóm theo các trường Ngày lập hóa đơn và Tên mặt hàng và hiển thị các trường này (Tổng giá, Số lượng trung bình và Đếm số hóa đơn trong cùng một ngày) cho các chứng từ có ngày lập hóa đơn là 12/05/2014

Toán tử giai đoạn $group MongoDB nhóm các tài liệu theo một số biểu thức được chỉ định và nhóm tài liệu cho từng nhóm riêng biệt. Trường _id trong tài liệu đầu ra chứa nhóm riêng biệt theo khóa. Các tài liệu đầu ra cũng có thể chứa các trường được tính toán chứa các giá trị của một số biểu thức bộ tích lũy được nhóm theo trường _id của $group. Toán tử này không đặt hàng các tài liệu đầu ra của nó

cú pháp

{ $group: { _id: , : {  :  }, .. } }

 

Những điểm cần nhớ

  • Trường _id là bắt buộc;
  • The rest of the fields eligible to be computed are optional and computed using the operators.
  • The _id and the expressions can accept any valid expression.

Hóa đơn lấy mẫu

{
        "_id" : 1,
        "item" : "doz",
        "qty" : 20,
        "rate" : 10,
        "inv_date" : "02/02/2014"
}
{
        "_id" : 2,
        "item" : "sam",
        "qty" : 15,
        "rate" : 8,
        "inv_date" : "05/12/2014"
}
{
        "_id" : 3,
        "item" : "amp",
        "qty" : 25,
        "rate" : 8,
        "inv_date" : "07/02/2014"
}
{
        "_id" : 4,
        "item" : "doz",
        "qty" : 20,
        "rate" : 10,
        "inv_date" : "02/02/2014"
}
{
        "_id" : 5,
        "item" : "amp",
        "qty" : 10,
        "rate" : 8,
        "inv_date" : "05/12/2014"
}
{
        "_id" : 6,
        "item" : "doz",
        "qty" : 30,
        "rate" : 10,
        "inv_date" : "13/04/2014"
}
{
        "_id" : 7,
        "item" : "sam",
        "qty" : 15,
        "rate" : 8,
        "inv_date" : "05/12/2014"
}
{
        "_id" : null,
        "item" : "mks",
        "qty" : 10,
        "rate" : 20,
        "inv_date" : "17/12/2014"
}

Ví dụ 1. nhóm $

Ví dụ sau nhóm theo trường ngày lập hóa đơn và hiển thị tổng chi phí, số lượng trung bình và số lượng hóa đơn trong cùng một ngày

db.invoice.aggregate(
   [
      {
        $group : {_id : "$inv_date",
           totalCost: { $sum: { $multiply: [ "$rate", "$qty" ] } },
           avgQty: { $avg: "$qty" },
           count: { $sum: 1 }
        }
     }
  ]
).pretty();

đầu ra

{ "_id" : "17/12/2014", "totalCost" : 200, "avgQty" : 10, "count" : 1 }
{ "_id" : "13/04/2014", "totalCost" : 300, "avgQty" : 30, "count" : 1 }
{
        "_id" : "05/12/2014",
        "totalCost" : 320,
        "avgQty" : 13.333333333333334,
        "count" : 3
}
{ "_id" : "07/02/2014", "totalCost" : 200, "avgQty" : 25, "count" : 1 }
{ "_id" : "02/02/2014", "totalCost" : 400, "avgQty" : 20, "count" : 2 }

Ở đây từ kết quả cho thấy rằng, tài liệu cho trường ngày lập hóa đơn đã được nhóm lại và hiển thị tổng chi phí, số lượng trung bình và số lượng hóa đơn được thực hiện cho ngày đó

Ví dụ-2. $group trên nhiều khóa

Ví dụ sau nhóm theo ngày lập hóa đơn, sau đó theo trường mục và hiển thị tổng chi phí, số lượng trung bình và số lượng hóa đơn trong cùng một ngày

db.invoice.aggregate(
   [
      {
        $group : {_id : {inv_date : "$inv_date",item : "$item"},
           totalCost: { $sum: { $multiply: [ "$rate", "$qty" ] } },
           avgQty: { $avg: "$qty" },
           count: { $sum: 1 }
        }
     }
  ]
).pretty();

đầu ra

{
        "_id" : {
                "inv_date" : "17/12/2014",
                "item" : "mks"
        },
        "totalCost" : 200,
        "avgQty" : 10,
        "count" : 1
}
{
        "_id" : {
                "inv_date" : "13/04/2014",
                "item" : "doz"
        },
        "totalCost" : 300,
        "avgQty" : 30,
        "count" : 1
}
{
        "_id" : {
                "inv_date" : "05/12/2014",
                "item" : "amp"
        },
        "totalCost" : 80,
        "avgQty" : 10,
        "count" : 1
}
{
        "_id" : {
                "inv_date" : "07/02/2014",
                "item" : "amp"
        },
        "totalCost" : 200,
        "avgQty" : 25,
        "count" : 1
}
{
        "_id" : {
                "inv_date" : "05/12/2014",
                "item" : "sam"
        },
        "totalCost" : 240,
        "avgQty" : 15,
        "count" : 2
}
{
        "_id" : {
                "inv_date" : "02/02/2014",
                "item" : "doz"
        },
        "totalCost" : 400,
        "avgQty" : 20,
        "count" : 2
}

Từ kết quả trên cho thấy, chứng từ của hóa đơn ngày 12/05/2014 và ngày 02/02/2014 có cùng một mặt hàng, hai trường này gộp lại tạo thành một nhóm

Ví dụ-3. $group trên nhiều khóa với $match

Ví dụ sau nhóm theo ngày lập hóa đơn, sau đó theo trường mục và hiển thị tổng chi phí, số lượng trung bình và số lượng hóa đơn trong cùng một ngày đối với những chứng từ có ngày lập hóa đơn là 12/05/2014

db.invoice.aggregate(
   [
    { 
	$match : {inv_date : "05/12/2014"}
    },
      {
        $group : {_id : {inv_date : "$inv_date",item : "$item"},
           totalCost: { $sum: { $multiply: [ "$rate", "$qty" ] } },
           avgQty: { $avg: "$qty" },
           count: { $sum: 1 }
        }
     }
  ]
).pretty();

đầu ra

________số 8

Từ kết quả trên cho thấy, chứng từ lập hóa đơn ngày 12/05/2014 có 3 hóa đơn nhưng cùng một tổ hợp mặt hàng đã tạo thành một nhóm

Ví dụ-4. $group giá trị riêng biệt

Thao tác tổng hợp sau đây sử dụng giai đoạn $group để nhóm ngày lập hóa đơn của các tài liệu theo mục

Nhóm theo trong MongoDB là gì?

MongoDB group by được dùng để nhóm dữ liệu từ bộ sưu tập , chúng ta có thể đạt được nhóm theo mệnh đề bằng hàm tổng hợp và phương thức nhóm trong MongoDB. Mặc dù sử dụng hàm tổng hợp với các hoạt động truy vấn nhóm theo mệnh đề nhanh hơn như truy vấn thông thường, nhưng về cơ bản, hàm tổng hợp được sử dụng trong nhiều điều kiện.

Nhóm ở cầy mangut LÀ GÌ?

Đầu tiên, tôi phát hiện ra rằng nhóm với Mongoose được gọi là Tổng hợp .

Sự khác biệt giữa nhóm và dự án trong MongoDB là gì?

$group được sử dụng để nhóm các tài liệu đầu vào theo biểu thức _id đã chỉ định và đối với mỗi nhóm riêng biệt, xuất ra một tài liệu. $project được sử dụng để chuyển các tài liệu có các trường được yêu cầu sang giai đoạn tiếp theo trong quy trình

Tập hợp nhóm là gì?

Tập hợp là tập hợp những người tình cờ ở cùng một địa điểm vào cùng một thời điểm nhưng không có mối liên hệ nào khác với nhau. Example: The people gathered in a restaurant on a particular evening are an example of an aggregate, not a group.