如何在oauth_token_secret
列表中找到每个项目的长度:
例如,如果我正在寻找"mol"
,我希望得到以下结果:
"versionA" : "2.1.2"
我的数据:
{"project" : "A", "scene" : 13455312, mol:[3,2,1]},
{"project" : "B", "scene" : 13455344, mol:[3,3,3]}
答案 0 :(得分:1)
您可以$match
到version
字段和$map
,它会迭代mol
和$size
来计算数据字段的长度。
db.collection.aggregate(
[{
$match: {
"versionA": "2.1.2"
}
}, {
$project: {
_id: 0,
"project": 1,
"scene": 1,
"mol": {
$map: {
input: "$mol",
as: "mo",
in: {
$size: "$$mo.data"
}
}
}
}
}]
)
答案 1 :(得分:0)
还有另一种方法:
首先$map
{mol}的每个元素,然后在内部使用$reduce
将mol的每个元素减小为数组内部的大小。
db.stack.aggregate([
{
$match: { "versionA": "2.1.2" }
},
{
$project: {
_id: 0,
"project": 1,
"scene": 1,
mol: {
$map: {
input: "$mol",
as: "ob",
in: {
$reduce: {
input: "$$ob.data",
initialValue: 0,
in: { $add: ["$$value", 1] }
}
}
}
}
}
}
]);