Как отфильтровать документы по нескольким условиям на массиве объектов в MongoDB - PullRequest
0 голосов
/ 24 апреля 2020

Предположим, у меня есть коллекция, в которой каждый документ выглядит следующим образом:

document schema

Можно ли найти все документы этой коллекции на основе следующие несколько условий для объектов в массиве модулей.

{_id: OID123, status: available} and {_id: OID456, status: complete}

Таким образом, он должен вернуть документ, подобный следующему:

{modules: [{_id: OID123, status: available}, {_id: OID456, status: complete}, {_id: OID789, ...}] }

Схема / Конфигурация на Mon go детская площадка для этой проблемы

1 Ответ

0 голосов
/ 24 апреля 2020

Спасибо всем!

Мне удалось решить эту проблему, выполнив следующий запрос с использованием оператора $ all:

db.collection.find({
  "modules": {
    $all: [
      {
        $elemMatch: {
          "_id": "OID1",
          "status": "available"
        }
      },
      {
        $elemMatch: {
          "_id": "OID2",
          "status": "complete"
        }
      }
    ]
  }
})

Более подробную информацию можно найти по ссылке на упомянутую игровую площадку:

Пн go ссылка на игровую площадку с Query и пример схемы для этой проблемы

...