Как запросить mongodb для получения результатов на основе значений вложенных параметров? - PullRequest
1 голос
/ 07 февраля 2020

Я работаю с MongoDB впервые. У меня есть коллекция, каждый документ которой имеет примерно следующую форму в MongoDB -

{
   "name":[
      {
         "value":"abc",
         "created_on":"2020-02-06 06:11:21.340611+00:00"
      },
      {
         "value":"xyz",
         "created_on":"2020-02-07 06:11:21.340611+00:00"
      }
   ],
   "score":[
      {
         "value":12,
         "created_on":"2020-02-06 06:11:21.340611+00:00"
      },
      {
         "value":13,
         "created_on":"2020-02-07 06:11:21.340611+00:00"
      }
   ]
}

Как мне сформировать запрос, чтобы я получал последние обновленные значения каждого поля в данном документе. Я прошел Запрос встроенных документов , но я не смог понять, как это.

Мой ожидаемый результат -

{
    "name": "xyz",
    "score": "13"
}

1 Ответ

1 голос
/ 07 февраля 2020

Если вы всегда делаете pu sh новые / последние значения для массивов name & score , тогда вы можете попробовать выполнить запрос ниже, он получит последний элемент из массива, как в целом новые / последние значения всегда будут добавляться как последний элемент в массиве:

db.collection.aggregate([
    { $addFields: { name: { $arrayElemAt: ['$name', -1] }, score: { $arrayElemAt: ['$score', -1] } } },
    { $addFields: { name: '$name.value', score: '$score.value' } }])

Тест: MongoDB-Playground

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