MongoDB-布局
我是MongoDB的新手,所以如果我在这里使用错误的术语,请原谅我。
鉴于上面的布局(附图),我需要提出两个查询:
用例1:一个查询,该查询将输出给定文档标识符的someArrayField下元素的总数。 例如,对于上述布局,我希望查询为someArrayField返回2,因为它下面有2个元素作为嵌套文档。
用例2:一个查询,该查询将输出Collection_1
(Collection_1
下的每个文档的someArrayField下的元素总数。布局)。
我知道,我需要以某种方式使用“聚合管道”来获得所需的结果,但是由于缺乏NoSQL的经验,我在这里有些挣扎。
因此,我们非常感谢您的帮助!
答案 0 :(得分:0)
给出以下测试集:
{
"_id" : ObjectId("5b453cc7799fb211dc44a1e8"),
"id" : 1.0,
"nestedDoc" : {
"nestedArray" : [
{
"field1" : "value1",
"field2" : "value2",
"field3" : "value3"
},
{
"field1" : "value11",
"field2" : "value21",
"field3" : "value31"
},
{
"field1" : "value12",
"field2" : "value22",
"field3" : "value32"
}
]
}
}
{
"_id" : ObjectId("5b453d23799fb211dc44a1e9"),
"id" : 2.0,
"nestedDoc" : {
"nestedArray" : [
{
"field1" : "value1",
"field2" : "value29",
"field3" : "value39"
},
{
"field1" : "value118",
"field2" : "value281",
"field3" : "value381",
"field4" : "value281"
},
{
"field1" : "value172",
"field2" : "value272",
"field3" : "value372"
}
]
}
}
用例1 : 运行以下聚合查询:
db.test1.aggregate(
[
// Stage 1 : filter documents
{
$match: {
id:1
}
},
// Stage 2 : count array size and return only it.
{
$project: {
arraySize:{$size:"$nestedDoc.nestedArray"},
_id:0
}
},
]
);
**用例2 **运行以下命令:
db.test1.aggregate(
[
// Stage 1 count array size for each document
{
$project: {
_id:0,
arraySize:{$size:"$nestedDoc.nestedArray"}
}
},
// Stage 2 group all documents and sum arraySize
{
$group: {
_id:null,
totalArraysSize:{$sum:"$arraySize"}
}
},
]
);