$ group с вложенным элементом массива

1

хотел бы знать, как использовать агрегацию MongoDB для коллективного подсчета количества аргументов reason_id:

Я хотел бы узнать, что есть 2 подсчета за наличие "reason_id = KW7Kcsv7835YZeE3n" и 1 счет за "reason_id = KNcKQCjhFzha3oLfE".

Вот мои данные:

[
  {
    "_id": "2DLQFJLbZScBXpSam",
    "toilet_id": "bJsyfh3TCvpTzE2mJ",
    "reason_ids": [
      "KNcKQCjhFzha3oLfE",
      "KW7Kcsv7835YZeE3n"
    ],
    "score_id": null,
    "toilet": {
      "_id": "bJsyfh3TCvpTzE2mJ",
      "name": "Toilet_M_1",
      "gender": "m",
      "mac_address": "11:11:11:11:11:11"
    }
  },

  {
    "_id": "akjsbcjascklsacas",
    "toilet_id": "bJsyfh3TCvpTzE2mJ",
    "reason_ids": [
      "KW7Kcsv7835YZeE3n"
    ],
    "score_id": null,
    "toilet": {
      "_id": "fsgndgklndsdsdsd",
      "name": "Toilet_F_1",
      "gender": "f",
      "mac_address": "11:11:11:11:11:11"
    }
  },
]
  • 1
    Вы можете использовать db.collectionname.aggregate([ {"$unwind":"$reason_ids"}, {"$group":{"_id":"$reason_ids","count":{"$sum":1}}} ])
Теги:
aggregation-framework

1 ответ

1
Лучший ответ

Вы можете попробовать это

db.collection.aggregate([
  {
    "$unwind": "$reason_ids"
  },
  {
    "$group": {
      "_id": "$reason_ids",
      "count": {
        "$sum": 1
      }
    }
  }
])

Выход

[
  {
    "_id": "KW7Kcsv7835YZeE3n",
    "count": 2
  },
  {
    "_id": "KNcKQCjhFzha3oLfE",
    "count": 1
  }
]

Попробуйте здесь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню