在mongodb中获取文档中的文档计数

时间:2018-07-23 00:02:44

标签: mongodb aggregation-framework

我的结构是...

solution = minimize(rootfunc,initialGuess,method='SLSQP',\
                bounds=bnds,constraints=con2,options={'eps':1,'disp':True})

我想获取用户的总天数。如果{ _id = object_id, user: name, days: { "4/1/2010": {"checked": true}, "4/2/2011": {"checked": false)} } 是一个数组,我会做类似...

days

,但是由于我无法使用 db.collection.aggregate([{"$group": {"_id": null, {"$sum": {"$size": "$days"}}}}]) ,因此无法正常工作。有人有建议吗?

注意:每个用户的数据结构中可能缺少不同的天数,这就是为什么我要检查每个用户的size

中的计数的原因

1 个答案:

答案 0 :(得分:2)

您可以在$objectToArray阶段使用聚合管道将days对转换为数组,然后在3.4的$sum阶段将$size$group转换为数组。 / p>

db.collection.aggregate([
  {"$group":{
    "_id":null,
    "count":{
      "$sum":{
        "$size":{"$objectToArray":"$days"}
      }
    }
  }}
])