Tổng trong mongodb là gì và làm thế nào để sử dụng nó?

Để lấy tổng, hãy sử dụng $sum cùng với tổng hợp(). Hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -

> db.demo337.insertOne({"Amount":100});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e5231e5f8647eb59e56209b")
}
> db.demo337.insertOne({"Amount":500});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e5231e9f8647eb59e56209c")
}
> db.demo337.insertOne({"Amount":400});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e5231ebf8647eb59e56209d")
}

Hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find() -

> db.demo337.find();

Điều này sẽ tạo ra đầu ra sau -

{ "_id" : ObjectId("5e5231e5f8647eb59e56209b"), "Amount" : 100 }
{ "_id" : ObjectId("5e5231e9f8647eb59e56209c"), "Amount" : 500 }
{ "_id" : ObjectId("5e5231ebf8647eb59e56209d"), "Amount" : 400 }

Sau đây là truy vấn để tính tổng trong MongoDB −

> db.demo337.aggregate(
..    [
..       {
..          $group:
..          {
..             _id:null,
..             totalAmount: { $sum:"$Amount" }
..          }
..       }
..    ]
.. );

Điều này sẽ tạo ra đầu ra sau -

{ "_id" : null, "totalAmount" : 1000 }

Tổng trong mongodb là gì và làm thế nào để sử dụng nó?


Tổng trong mongodb là gì và làm thế nào để sử dụng nó?

Trong MongoDB, toán tử đường dẫn tổng hợp

{ $sum: [ ,  .. ]  }
7 tính toán và trả về tổng các giá trị số

cú pháp

Toán tử

{ $sum: [ ,  .. ]  }
7 hỗ trợ hai cú pháp

Cú pháp 1

{ $sum:  }

Cú pháp 2

{ $sum: [ ,  .. ]  }

Cú pháp đầu tiên chấp nhận một đối số và cú pháp thứ hai chấp nhận nhiều đối số

Khi được sử dụng trong giai đoạn

{ $sum: [ ,  .. ]  }
9, bạn chỉ có thể sử dụng cú pháp đầu tiên. Trong trường hợp này,
{ $sum: [ ,  .. ]  }
7 trả về tổng của tất cả các giá trị số có được từ việc áp dụng biểu thức đã chỉ định cho từng tài liệu trong một nhóm tài liệu chia sẻ cùng một nhóm theo khóa

Ví dụ về Cú pháp 1 (Đối số đơn)

Dưới đây là một vài ví dụ sử dụng cú pháp 1

Tài liệu được nhóm

Ví dụ này sử dụng

{ $sum: [ ,  .. ]  }
7 kết hợp với
{ $sum: [ ,  .. ]  }
9 để trả về tổng trên một nhóm tài liệu được nhóm theo khóa

Giả sử chúng ta có một bộ sưu tập tên là

> db.demo337.find();
33 với các tài liệu sau

> db.demo337.find();
3

Chúng tôi có thể nhóm các tài liệu này theo trường

> db.demo337.find();
34 của chúng, sau đó sử dụng
{ $sum: [ ,  .. ]  }
7 để trả về tổng của trường
> db.demo337.find();
36 cho mỗi nhóm

> db.demo337.find();
8

Kết quả

> db.demo337.find();
9

Mảng

Ví dụ này áp dụng

{ $sum: [ ,  .. ]  }
7 cho một tài liệu có chứa một trường có một mảng giá trị

Tùy chọn này chỉ khả dụng khi sử dụng cú pháp đối số đơn. Mảng bị bỏ qua khi sử dụng cú pháp nhiều đối số (thêm về điều này bên dưới)

Giả sử chúng ta có một bộ sưu tập tên là

> db.demo337.find();
38 với các tài liệu sau

{ "_id" : ObjectId("5e5231e5f8647eb59e56209b"), "Amount" : 100 }
{ "_id" : ObjectId("5e5231e9f8647eb59e56209c"), "Amount" : 500 }
{ "_id" : ObjectId("5e5231ebf8647eb59e56209d"), "Amount" : 400 }
2

Chúng ta có thể áp dụng

{ $sum: [ ,  .. ]  }
7 cho trường
> db.demo337.find();
80 trong mỗi tài liệu

{ "_id" : ObjectId("5e5231e5f8647eb59e56209b"), "Amount" : 100 }
{ "_id" : ObjectId("5e5231e9f8647eb59e56209c"), "Amount" : 500 }
{ "_id" : ObjectId("5e5231ebf8647eb59e56209d"), "Amount" : 400 }
5

Kết quả

{ "_id" : ObjectId("5e5231e5f8647eb59e56209b"), "Amount" : 100 }
{ "_id" : ObjectId("5e5231e9f8647eb59e56209c"), "Amount" : 500 }
{ "_id" : ObjectId("5e5231ebf8647eb59e56209d"), "Amount" : 400 }
6

Trong trường hợp này, bốn tài liệu đầu tiên trả về tổng của các số khác nhau trong mảng tương ứng của chúng

Trong trường hợp của tài liệu 4, số này giống với số, vì chỉ có một số trong mảng

Tài liệu 5 trả về

> db.demo337.find();
81 vì chúng tôi đã cung cấp một mảng trống

Tài liệu 6 đã trả lại

> db.demo337.find();
81 vì chúng tôi đã cung cấp
> db.demo337.find();
83 làm đối số

Tài liệu 7 trả về

> db.demo337.find();
81 vì trường thậm chí không tồn tại

Ví dụ về Cú pháp 2 (Nhiều đối số)

Cú pháp thứ hai liên quan đến việc cung cấp cho

{ $sum: [ ,  .. ]  }
7 nhiều hơn một đối số.
{ $sum: [ ,  .. ]  }
7 sau đó tính tổng dựa trên tất cả các đối số được cung cấp

Giả sử chúng ta có một bộ sưu tập tên là

> db.demo337.find();
87 với các tài liệu sau

> db.demo337.aggregate(
..    [
..       {
..          $group:
..          {
..             _id:null,
..             totalAmount: { $sum:"$Amount" }
..          }
..       }
..    ]
.. );
4

Chúng ta có thể sử dụng

{ $sum: [ ,  .. ]  }
7 để trả về tổng của các trường ________ 189, ________ 190, ________ 191 và ________ 192 của mỗi tài liệu

{ "_id" : null, "totalAmount" : 1000 }
0

Kết quả

{ $sum: [ ,  .. ]  }
0

Tài liệu 1 trả về tổng giá trị đầu vào của

> db.demo337.find();
93,
> db.demo337.find();
94,
> db.demo337.find();
95 và
> db.demo337.find();
96

Tuy nhiên, hai tài liệu tiếp theo chỉ trả về tổng giá trị đầu vào của

> db.demo337.find();
93,
> db.demo337.find();
94 và
> db.demo337.find();
95. Toán tử
{ $sum: [ ,  .. ]  }
7 đã bỏ qua các trường
> db.demo337.find();
92 của họ

Điều này là do

{ $sum: [ ,  .. ]  }
7 bỏ qua các giá trị không phải là số. Vì vậy, trong trường hợp này, nó đã bỏ qua
{ "_id" : ObjectId("5e5231e5f8647eb59e56209b"), "Amount" : 100 }
{ "_id" : ObjectId("5e5231e9f8647eb59e56209c"), "Amount" : 500 }
{ "_id" : ObjectId("5e5231ebf8647eb59e56209d"), "Amount" : 400 }
23 trong tài liệu 3 và tính tổng từ các trường (số) còn lại

Đối với tài liệu 2, trường

> db.demo337.find();
92 của nó chứa một mảng. Như đã đề cập, toán tử
{ $sum: [ ,  .. ]  }
7 bỏ qua mảng khi sử dụng cú pháp nhiều đối số. Chính xác hơn, nó coi các mảng là các giá trị không phải là số khi được sử dụng trong ngữ cảnh này và
{ $sum: [ ,  .. ]  }
7 bỏ qua các giá trị không phải là số

Nếu tất cả các giá trị không phải là số, thì

{ $sum: [ ,  .. ]  }
7 trả về
> db.demo337.find();
81. Chúng ta có thể thấy điều này với tài liệu 4

Các trường bị thiếu

Khi sử dụng cú pháp nhiều đối số,

{ $sum: [ ,  .. ]  }
7 sẽ bỏ qua mọi trường bị thiếu. Nghĩa là, nếu bạn cung cấp một trường không tồn tại, nó sẽ bỏ qua nó. Nếu không có trường nào tồn tại, thì nó trả về
> db.demo337.find();
81

Thí dụ

{ $sum: [ ,  .. ]  }
1

Kết quả

{ $sum: [ ,  .. ]  }
0

Trong trường hợp này, tôi đã cung cấp thêm một trường (_______251) không tồn tại trong tài liệu.

{ $sum: [ ,  .. ]  }
7 đã tính tổng dựa trên các trường còn lại tồn tại

Tổng 1 trong MongoDB là gì?

1 câu trả lời. Trong MongoDB, $sum sẽ cộng giá trị của biểu thức cho mỗi hàng và trong trường hợp của bạn, bạn có 3 hàng nên nó sẽ là 1 .

Tổng hợp là gì?

Tổng số có nghĩa là tổng của Tổng số tín dụng trả chậm và Tổng số tiền lãi tín dụng .

MongoDB tính tổng tiền lương như thế nào?

$sum toán tử trả về tổng của tất cả các giá trị số của tài liệu trong bộ sưu tập trong MongoDB . Ở trên sẽ tạo bộ sưu tập (hoặc bảng) (nếu bộ sưu tập đã tồn tại, nó sẽ chèn tài liệu vào đó). Bước 2. 1 - Chúng tôi sẽ nhóm nhân viên theo FirstName và tìm tổng tiền lương của từng nhóm.

Làm cách nào để thêm số trong MongoDB?

MongoDB cung cấp các loại toán tử biểu thức số học khác nhau được sử dụng trong các giai đoạn quy trình tổng hợp và $add toán tử là một trong số đó. Toán tử này được sử dụng để thêm số hoặc ngày tháng. Nếu toán tử $add thêm ngày, thì nó sẽ coi các đối số khác là mili giây và thêm vào ngày đã chỉ định.