pad11
pad11

Reputation: 311

Getting the count of documents within a document in mongodb

I have a structure of...

{ _id = object_id,
  user: name,
  days: { "4/1/2010": {"checked": true},
          "4/2/2011": {"checked": false)}
 }

I want to get the total number of days across users. If days was an array, I would do something like...

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

but that won't work since I can't use size. Anyone have suggestions?

Note: There may be a different number of days missing in the data structure for each user which is why I want to check the count within each user's days

Upvotes: 1

Views: 37

Answers (1)

s7vr
s7vr

Reputation: 75934

You can use aggregation pipeline with $objectToArray stage to convert days pair into arrays followed by $sum and $size in a $group stage in 3.4.

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

Upvotes: 2

Related Questions