Kết quả sẽ có cùng loại với đầu vào trừ khi nó không thể được biểu diễn chính xác trong loại đó. Trong những trường hợp này
Số nguyên 32 bit sẽ được chuyển đổi thành số nguyên 64 bit nếu kết quả có thể biểu thị dưới dạng số nguyên 64 bit
Số nguyên 32 bit sẽ được chuyển đổi thành gấp đôi nếu kết quả không thể biểu thị dưới dạng số nguyên 64 bit
Số nguyên 64 bit sẽ được chuyển đổi thành gấp đôi nếu kết quả không thể biểu thị dưới dạng số nguyên 64 bit
Các trường không phải là số hoặc không tồn tại
Nếu được sử dụng trên một trường chứa cả giá trị số và không phải số, hãy bỏ qua các giá trị không phải 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, trả về
db.sales.aggregate[ [ { $group: { _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } }, totalAmount: { $sum: { $multiply: [ "$price", "$quantity" ] } }, count: { $sum: 1 } } } ]]
0 cho trường đóNếu tất cả các toán hạng không phải là số, trả về
db.sales.aggregate[ [ { $group: { _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } }, totalAmount: { $sum: { $multiply: [ "$price", "$quantity" ] } }, count: { $sum: 1 } } } ]]
0Toán hạng mảng
Trong giai đoạn, nếu biểu thức phân giải thành một mảng, coi toán hạng là một giá trị không phải là số
Trong các giai đoạn được hỗ trợ khác
Với một biểu thức duy nhất làm toán hạng của nó, nếu biểu thức phân giải thành một mảng, hãy chuyển sang mảng để thao tác trên các phần tử số của mảng để trả về một giá trị duy nhất
Với một danh sách các biểu thức là toán hạng của nó, nếu bất kỳ biểu thức nào phân giải thành một mảng, thì không đi qua mảng mà thay vào đó coi mảng là một giá trị không phải là số
ví dụ
Sử dụng trong Giai đoạn { $sum: [ , .. ] }
0
{ $sum: [ , .. ] }
Xem xét một bộ sưu tập
db.sales.aggregate[ [ { $group: { _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } }, totalAmount: { $sum: { $multiply: [ "$price", "$quantity" ] } }, count: { $sum: 1 } } } ]]
8 với các tài liệu sau{ "_id" : 1, "item" : "abc", "price" : 10, "quantity" : 2, "date" : ISODate["2014-01-01T08:00:00Z"] }{ "_id" : 2, "item" : "jkl", "price" : 20, "quantity" : 1, "date" : ISODate["2014-02-03T09:00:00Z"] }{ "_id" : 3, "item" : "xyz", "price" : 5, "quantity" : 5, "date" : ISODate["2014-02-03T09:05:00Z"] }{ "_id" : 4, "item" : "abc", "price" : 10, "quantity" : 10, "date" : ISODate["2014-02-15T08:00:00Z"] }{ "_id" : 5, "item" : "xyz", "price" : 5, "quantity" : 10, "date" : ISODate["2014-02-15T09:05:00Z"] }
Nhóm các tài liệu theo ngày và năm của trường
db.sales.aggregate[ [ { $group: { _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } }, totalAmount: { $sum: { $multiply: [ "$price", "$quantity" ] } }, count: { $sum: 1 } } } ]]
9, thao tác sau đây sử dụng bộ tích lũy để tính tổng số lượng và số lượng cho từng nhóm tài liệudb.sales.aggregate[ [ { $group: { _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } }, totalAmount: { $sum: { $multiply: [ "$price", "$quantity" ] } }, count: { $sum: 1 } } } ]]
Hoạt động trả về kết quả sau
{ "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 150, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 45, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 20, "count" : 1 }
Sử dụng trên một trường không tồn tại trả về giá trị là
db.sales.aggregate[ [ { $group: { _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } }, totalAmount: { $sum: { $multiply: [ "$price", "$quantity" ] } }, count: { $sum: 1 } } } ]]
0. Thao tác sau cố gắng thực hiện trên { "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 150, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 45, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 20, "count" : 1 }
4db.sales.aggregate[ [ { $group: { _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } }, totalAmount: { $sum: "$qty" }, count: { $sum: 1 } } } ]]
hoạt động trở lại
{ "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 0, "count" : 1 }
Bộ tích lũy tổng hợp có thể được sử dụng thay cho
{ "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 150, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 45, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 20, "count" : 1 }
6 trong giai đoạnMẹo
Xem thêm
Sử dụng trong Giai đoạn { $sum: [ , .. ] }
3
{ $sum: [ , .. ] }
Một bộ sưu tập
db.sales.aggregate[ [ { $group: { _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } }, totalAmount: { $sum: "$qty" }, count: { $sum: 1 } } } ]]
0 chứa các tài liệu sau{ "_id": 1, "quizzes": [ 10, 6, 7 ], "labs": [ 5, 8 ], "final": 80, "midterm": 75 }{ "_id": 2, "quizzes": [ 9, 10 ], "labs": [ 8, 8 ], "final": 95, "midterm": 80 }{ "_id": 3, "quizzes": [ 4, 5, 5 ], "labs": [ 6, 5 ], "final": 78, "midterm": 70 }
Ví dụ sau sử dụng giai đoạn trong để tính tổng điểm bài kiểm tra, tổng điểm phòng thí nghiệm và tổng điểm cuối kỳ và giữa kỳ
db.students.aggregate[[ { $project: { quizTotal: { $sum: "$quizzes"}, labTotal: { $sum: "$labs" }, examTotal: { $sum: [ "$final", "$midterm" ] } } }]]
Kết quả hoạt động trong các tài liệu sau
{ $sum: }
0Sử dụng trong Giai đoạn { $sum: [ , .. ] }
7
{ $sum: [ , .. ] }
Mới trong phiên bản 5. 0
Tạo bộ sưu tập
db.sales.aggregate[ [ { $group: { _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } }, totalAmount: { $sum: "$qty" }, count: { $sum: 1 } } } ]]
4 bao gồm doanh số bán bánh ở các bang California [db.sales.aggregate[ [ { $group: { _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } }, totalAmount: { $sum: "$qty" }, count: { $sum: 1 } } } ]]
5] và Washington [_______10_______6]{ $sum: }
1Ví dụ này sử dụng trong giai đoạn để xuất ra tổng của
db.sales.aggregate[ [ { $group: { _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } }, totalAmount: { $sum: "$qty" }, count: { $sum: 1 } } } ]]
9 bánh đã bán trong mỗi { "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 0, "count" : 1 }
0{ $sum: }
2trong ví dụ
1 tài liệu trong bộ sưu tập của{ "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 0, "count" : 1 }
0. Có phân vùng cho{ "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 0, "count" : 1 }
5 vàdb.sales.aggregate[ [ { $group: { _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } }, totalAmount: { $sum: "$qty" }, count: { $sum: 1 } } } ]]
6db.sales.aggregate[ [ { $group: { _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } }, totalAmount: { $sum: "$qty" }, count: { $sum: 1 } } } ]]
5 các tài liệu trong mỗi phần của{ "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 0, "count" : 1 }
6 theo thứ tự tăng dần [{ "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 0, "count" : 1 }
7], vì vậy{ "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 0, "count" : 1 }
6 sớm nhất là đầu tiên{ "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 0, "count" : 1 }
9 đặt trường{ "_id" : { "day" : 46, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 34, "year" : 2014 }, "totalAmount" : 0, "count" : 2 }{ "_id" : { "day" : 1, "year" : 2014 }, "totalAmount" : 0, "count" : 1 }
0 thành tổng của các giá trị{ "_id": 1, "quizzes": [ 10, 6, 7 ], "labs": [ 5, 8 ], "final": 80, "midterm": 75 }{ "_id": 2, "quizzes": [ 9, 10 ], "labs": [ 8, 8 ], "final": 95, "midterm": 80 }{ "_id": 3, "quizzes": [ 4, 5, 5 ], "labs": [ 6, 5 ], "final": 78, "midterm": 70 }
9 sử dụng giá trị được chạy trong cửa sổdb.sales.aggregate[ [ { $group: { _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } }, totalAmount: { $sum: "$qty" }, count: { $sum: 1 } } } ]]
Tài liệu chứa tài liệu nằm giữa giới hạn dưới của
3 và tài liệu{ "_id": 1, "quizzes": [ 10, 6, 7 ], "labs": [ 5, 8 ], "final": 80, "midterm": 75 }{ "_id": 2, "quizzes": [ 9, 10 ], "labs": [ 8, 8 ], "final": 95, "midterm": 80 }{ "_id": 3, "quizzes": [ 4, 5, 5 ], "labs": [ 6, 5 ], "final": 78, "midterm": 70 }
4 ở đầu ra. Điều này có nghĩa là trả về tổng của các giá trị{ "_id": 1, "quizzes": [ 10, 6, 7 ], "labs": [ 5, 8 ], "final": 80, "midterm": 75 }{ "_id": 2, "quizzes": [ 9, 10 ], "labs": [ 8, 8 ], "final": 95, "midterm": 80 }{ "_id": 3, "quizzes": [ 4, 5, 5 ], "labs": [ 6, 5 ], "final": 78, "midterm": 70 }
9 cho các tài liệu giữa phần đầu của phân vùng và tài liệu hiện tạidb.sales.aggregate[ [ { $group: { _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } }, totalAmount: { $sum: "$qty" }, count: { $sum: 1 } } } ]]
Trong kết quả này, tổng của các giá trị
db.sales.aggregate[ [ { $group: { _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } }, totalAmount: { $sum: "$qty" }, count: { $sum: 1 } } } ]]
9 cho db.sales.aggregate[ [ { $group: { _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } }, totalAmount: { $sum: "$qty" }, count: { $sum: 1 } } } ]]
5 và db.sales.aggregate[ [ { $group: { _id: { day: { $dayOfYear: "$date"}, year: { $year: "$date" } }, totalAmount: { $sum: "$qty" }, count: { $sum: 1 } } } ]]
6 được hiển thị trong trường { "_id": 1, "quizzes": [ 10, 6, 7 ], "labs": [ 5, 8 ], "final": 80, "midterm": 75 }{ "_id": 2, "quizzes": [ 9, 10 ], "labs": [ 8, 8 ], "final": 95, "midterm": 80 }{ "_id": 3, "quizzes": [ 4, 5, 5 ], "labs": [ 6, 5 ], "final": 78, "midterm": 70 }
0