MongoDB запрашивает агрегацию в одном документе - PullRequest
0 голосов
/ 03 апреля 2020

У меня короткий, но важный вопрос. Я новичок в MongoDB и запрашиваю.

Моя база данных выглядит следующим образом: в моей базе данных хранится только один документ (извините за размытие).

Документ состоит из разных полей:

  • два размыты и не важны
  • datum -> date
  • instance -> Array with Embedded Document Object; Наш экземпляр имеет идентификатор, два неважных поля и код.

My Document

Теперь я хочу запросить, сколько раз объект в моем Массив экземпляра имеет группу «a» и текстовый «sample»?

Возможно ли это вообще?

Я нашел только методы для подсчета, сколько документов имеет что-то ...

Я использую Mon go Compass, но я также могу использовать Pymon go, Mongoengine или любой другой инструмент для запроса mongodb.

Заранее спасибо, и если у вас есть дополнительные вопросы, пожалуйста, оставьте комментарий!

1 Ответ

1 голос
/ 03 апреля 2020

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

db.collection.aggregate([
  {
    $unwind: "$instance"
  },
  {
    $unwind: "$instance.label"
  },
  {
    $match: {
      "instance.label.group": "a",
      "instance.label.text": "sample",

    }
  },
  {
    $group: {
      _id: {
        group: "$instance.label.group",
        text: "$instance.label.text"
      },
      count: {
        $sum: 1
      }
    }
  }
])
...