mongodb: how to get the length of array with http method?

insert many:

[
  { comments: [{foo:1}, {foo:1}, {foo:1}, {foo:1}] }
  { comments: [{foo:1}, {foo:1}] }
  { comments: [{foo:1}, {foo:1}, {foo:1}, {foo:1}, {foo:1}] }
  { title: 'foo' }
  { comments: [{foo:1}, {foo:1}, {foo:1}, {foo:1}, {foo:1}, {foo:1}] }
]

I am trying to find a method to obtain the length of something from the document.

I would like to know how to obtain the desired result:

[{count: 4}, {count: 2}, {count: 5}, {title: 'foo', count: 0}, {count: 6}]

>Solution :

You can handle the case of missing field by wrapping it with $ifNull

db.collection.aggregate([
  {
    $project: {
      "count": {
        "$size": {
          $ifNull: [
            "$comments",
            []
          ]
        }
      }
    }
  }
])

Mongo Playground

Leave a Reply