如何使用 mongodb 获取对象内部的计数对象
How to take the count object inside object using mongodb
/* 1 */
{
"_id" : "123",
"gallary" : {
"profilepic" : [
"200"
]
}
},
我的要求是假设 gallary.profilepic
是对象 {}
Expected output:
count : 3
注意:_id 456
profilepic 是一个对象所以我们必须计数 (2) & 789
profilepic 是一个对象所以我们必须计数 (1) 所以输出应该是 2 + 1 = 3
试试这个聚合
$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 中,您可以在 $match
阶段
中使用 $expr
删除 $addFields
和 $match
阶段
/* 1 */
{
"_id" : "123",
"gallary" : {
"profilepic" : [
"200"
]
}
},
我的要求是假设 gallary.profilepic
是对象 {}
Expected output:
count : 3
注意:_id 456
profilepic 是一个对象所以我们必须计数 (2) & 789
profilepic 是一个对象所以我们必须计数 (1) 所以输出应该是 2 + 1 = 3
试试这个聚合
$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 中,您可以在 $match
阶段
$expr
删除 $addFields
和 $match
阶段