Как посчитать объекты в массиве в mongodb? - PullRequest
1 голос
/ 14 мая 2019

Я хочу подсчитать объекты, у которых quantity равно 3, в массиве документа, у которого _id равно 1.

{
   _id: 0,
   items: [
     { item_id: 43, quantity: 2, price: 10 },
     { item_id: 2, quantity: 1, price: 240 }
   ]
}
{
   _id: 1,
   items: [
     { item_id: 23, quantity: 3, price: 110 },
     { item_id: 103, quantity: 3, price: 5 },
     { item_id: 38, quantity: 2, price: 300 }
   ]
}
{
    _id: 2,
    items: [
       { item_id: 4, quantity: 1, price: 23 }
    ]
}

Что мне делать?

Ответы [ 2 ]

2 голосов
/ 14 мая 2019

Вам просто нужно использовать $size вместе с $filter оператор агрегирования

db.collection.aggregate([
  { '$match': { '_id': 1 }},
  { '$project': {
    'counts': {
      '$size': {
        '$filter': {
          'input': '$items',
          'cond': { '$eq': ['$$this.quantity', 3] }
        }
      }
    }
  }}
])

MongoPlayground

0 голосов
/ 14 мая 2019

Вы можете использовать функцию агрегирования $ size в mongodb и получить требуемый результат

...