假设我们有如下的MongoDB集合:
{
"_id" : ObjectId("60d81e64aae4c82a65dd8f01"),
"name" : "doc1",
"details" : {
"property1" : "A",
"property2" : "B"
},
"values" : [ 1, 2, 3 ]
},
{
"_id" : ObjectId("60d81e7eaae4c82a65dd8f02"),
"name" : "doc2",
"details" : {
"property1" : "A",
"property2" : "C"
},
"values" : [ 4, 5, 6 ]
},
{
"_id" : ObjectId("60d81e8eaae4c82a65dd8f03"),
"name" : "doc3",
"details" : {
"property1" : "B",
"property2" : "D"
},
"values" : [ 7, 8, 9 ]
}
我们想要按details.property1
和details.property2
分组,然后计算每个组中的文档数量和它们values
数组的总和。
可以使用MongoDB的聚合框架完成此任务。以下是解决方法的代码示例:
db.collection.aggregate([
{
// 第一步: 按details.property1和details.property2分组
$group: {
_id: {
property1: "$details.property1",
property2: "$details.property2"
},
count: { $sum: 1 },
total: { $sum: { $sum: "$values" } }
}
},
{
// 第二步: 对结果进行投影,以显示结果
$project: {
_id: 0,
property1: "$_id.property1",
property2: "$_id.property2",
count:
上一篇:按子位置对文档进行排序
下一篇:按子文件夹编号对目录列表进行排序