/* 1 */
{
"_id" : "123",
"gallary" : {
"profilepic" : [
"200"
]
}
},
我的要求是假设gallary.profilepic
是对象 {}
预期输出:
count : 3
注意:_id 456
profilepic一个对象,所以我们必须取计数(2)&789
profilepic是一个对象,所以我们必须取count(1),所以输出应该为2 +1 = 3
答案 0 :(得分:0)
尝试此聚合
$type
来标识对象的类型并进行过滤$objectToArray
将对象转换为数组以获取大小管道
db.t51.aggregate([
{$addFields : {type : {$type : "$gallary.profilepic"}}},
{$match : {type : "object"}},
{$group : {_id : null, count : {$sum : {$size : {$objectToArray : "$gallary.profilepic"}}}}}
])
输出
{ "_id" : null, "count" : 3 }
在mongo 3.6中,您可以在$addFields
阶段用$match
删除$expr
和$match
阶段