Как сделать запрос на основе ключа и значения вложенного объекта? - PullRequest
0 голосов
/ 25 января 2019
"session": { 
  "number": 123,
  "words": {
    "1": {
      "id": 10,
      "name": "Hello"
    },
    "2": {
      "id": 13,
      "name": "Hi"
    },
    "3": {
      "id": 135,
      "name": "Hey"
    }
  }
}

У нас есть данные в базе данных MongoDB в данной структуре, которые я не могу изменить.

Я могу получить объект, основанный на запросе session.number равен 123, но теперь проблема в том, что мы знаем, что вложенный name - это либо Привет, Эй, либо Привет, но инкрементный ключ внутри слов объекта непредсказуем, так? можно запросить базу по полю "имя"?

1 Ответ

0 голосов
/ 26 января 2019

Вы можете использовать $objectToArray и преобразовать свойство words в массив, а затем запросить его, как хотите, вы можете использовать следующее:

collection.aggregate([
    {
        $project: {
            words: { $objectToArray: "$session.words" }
        }
    },
    {
        $match: {
            'words.v': 'hi'
        }
    }
]);

Вы можете прочитать документы для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...