如何使用mongodb

时间:2019-01-11 14:27:21

标签: mongodb mongodb-query aggregation-framework aggregate aggregation

/* 1 */
{
    "_id" : "123",
    "gallary" : {
        "profilepic" : [
            "200"
        ]
    }
},

我的要求是假设gallary.profilepic是对象 {}

  

预期输出:

count : 3

注意:_id 456 profilepic一个对象,所以我们必须取计数(2)&789 profilepic是一个对象,所以我们必须取count(1),所以输出应该为2 +1 = 3

1 个答案:

答案 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阶段