Trong phần này, chúng ta sẽ thử giải câu đố Mongodb-Query-To-Sum-Specific-Fields bằng cách sử dụng ngôn ngữ máy tính. Đoạn mã sau đây sẽ chứng minh điểm này
> db.getSumOfFieldsDemo.aggregate[[ { $match: { Status: "Active" } }, { $group: { _id: "$Customer_Id", TotalSum: { $sum: "$Price" } } } ]];
Như chúng ta đã thấy, vấn đề với biến Mongodb-Query-To-Sum-Specific-Fields đã được giải quyết bằng cách sử dụng nhiều trường hợp khác nhau
Làm cách nào để tính tổng các trường trong MongoDB?
Nếu được sử dụng trên một trường chứa cả giá trị số và không phải số, thì $sum sẽ bỏ qua các giá trị không phải là số và trả về tổng của các giá trị số. Nếu được sử dụng trên một trường không tồn tại trong bất kỳ tài liệu nào trong bộ sưu tập, $sum trả về 0 cho trường đó. Nếu tất cả các toán hạng không phải là số, $sum trả về 0
MongoDB tính tổng tiền lương như thế nào?
Toán tử $sum 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 ta sẽ nhóm nhân viên theo FirstName và tìm tổng lương của từng nhóm
Dự án $ trong MongoDB là gì?
Sự định nghĩa. dự án $. 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. Các trường được chỉ định có thể là các trường hiện có từ các tài liệu đầu vào hoặc các trường mới được tính toán
Thư giãn trong MongoDB là gì?
MongoDB $unwind là gì? . 02-Dec-2020
Tổng hợp là gì?
Tổng Số có nghĩa là tổng của Tổng Tín dụng Trả chậm và Tổng Tín dụng Trả lãi
Làm thế nào để bạn tổng hợp trong cầy mangut?
Tập hợp trong MongoDB cung cấp một loạt các toán tử rất hữu ích. Một toán tử như vậy là $sum. Như tên cho thấy, toán tử $sum được sử dụng để lấy tổng các giá trị số. Nó thường được sử dụng với $match và $group. 28-Jan-2020
Cái nào báo cho hàm chỉ tổng hợp các giá trị riêng biệt?
RIÊNG BIỆT. Nó báo cho hàm chỉ tổng hợp các giá trị riêng biệt. Cú pháp của hàm SUM[] trong SQL Server được đưa ra bên dưới
- CHỌN TỔNG [ DISTINCT tổng hợp_biểu thức]
- TỪ tên_bảng
- [điều kiện NƠI];
Làm thế nào để bạn tính tổng tiền lương trong SQL?
Ví dụ – Với một biểu thức SELECT SUM[salary] AS "Total Lương" TỪ các nhân viên WHERE lương > 25000; . Do đó, "Tổng Lương" sẽ hiển thị dưới dạng tên trường khi tập kết quả được trả về
Làm cách nào tôi có thể nhận được tổng số trong MongoDB?
n = count[ conn , collection ] trả về tổng số tài liệu trong một bộ sưu tập bằng cách sử dụng kết nối giao diện MongoDB® C++. n = count[ conn , collection ,Query= mongoquery ] trả về tổng số tài liệu trong một truy vấn MongoDB đã thực thi trên một bộ sưu tập
$$ root trong MongoDB là gì?
Biến $$ROOT chứa các tài liệu nguồn cho nhóm. Nếu bạn muốn chuyển chúng qua trạng thái không sửa đổi, bạn có thể thực hiện việc này bằng cách $đẩy $$ROOT vào đầu ra từ nhóm
Tôi chưa quen với mongodb và có thể tôi đang thiếu thứ gì đó. Nhưng có rất nhiều mẫu trên internet, vẫn gặp sự cố khi lấy tổng trên một trường là một phần của mảng đối tượng. Đây là những gì tôi đang làm
db.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
cố gắng để có được tổng số tiền theo những cách khác nhau
db.collection.aggregate[[
{$group:{_id:null, TotalBalance:{$sum:"$balance.amount"}}}
]]
lấy số dư 0 thay vì -2300
{ "_id" : null, "TotalBalance" : 0 }
những điều tương tự với $unwind
db.collection.aggregate[[
{$unwind:"$balance"},
{$group:{_id:null, TotalBalance:{$sum:"$balance.amount"}}}
]]
những gì tôi đang làm sai?
Cảm ơ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ápCú 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óaVí 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óaGiả sử chúng ta có một bộ sưu tập tên là
db.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
33 với các tài liệu saudb.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
3Chúng tôi có thể nhóm các tài liệu này theo trường
db.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
34 của chúng, sau đó sử dụng { $sum: [ , .. ] }
7 để trả về tổng của trường db.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
36 cho mỗi nhómdb.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
8Kết quả
db.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
9Mả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.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
38 với các tài liệu saudb.collection.aggregate[[
{$group:{_id:null, TotalBalance:{$sum:"$balance.amount"}}}
]]
2Chúng ta có thể áp dụng
{ $sum: [ , .. ] }
7 cho trường db.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
80 trong mỗi tài liệudb.collection.aggregate[[
{$group:{_id:null, TotalBalance:{$sum:"$balance.amount"}}}
]]
5Kết quả
db.collection.aggregate[[
{$group:{_id:null, TotalBalance:{$sum:"$balance.amount"}}}
]]
6Trong 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.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
81 vì chúng tôi đã cung cấp một mảng trốngTài liệu 6 đã trả lại
db.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
81 vì chúng tôi đã cung cấp db.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
83 làm đối sốTài liệu 7 trả về
db.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
81 vì trường thậm chí không tồn tạiVí 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ấpGiả sử chúng ta có một bộ sưu tập tên là
db.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
87 với các tài liệu sau{ "_id" : null, "TotalBalance" : 0 }
4Chú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ệudb.collection.aggregate[[
{$unwind:"$balance"},
{$group:{_id:null, TotalBalance:{$sum:"$balance.amount"}}}
]]
0Kết quả
{ $sum: [ , .. ] }
0Tài liệu 1 trả về tổng giá trị đầu vào của
db.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
93, db.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
94, db.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
95 và db.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
96Tuy nhiên, hai tài liệu tiếp theo chỉ trả về tổng giá trị đầu vào của
db.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
93, db.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
94 và db.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
95. Toán tử { $sum: [ , .. ] }
7 đã bỏ qua các trường db.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
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 db.collection.aggregate[[
{$group:{_id:null, TotalBalance:{$sum:"$balance.amount"}}}
]]
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.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
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.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
81. Chúng ta có thể thấy điều này với tài liệu 4Cá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.collection.insertMany[[
{ "id" : "6002010011500", "balance" : [ { "type" : "PR", "amount" : "1000"
}, { "type" : "IN", "amount" : "300" } ] },
{"id" : "5001010001005", "balance": [ { "type" : "PR", "amount" : "-3000"
}, { "type" : "IN", "amount" : "-600" } ] }
]]
81Thí dụ
{ $sum: [ , .. ] }
1Kết quả
{ $sum: [ , .. ] }
0Trong 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