$ set не заменяет значения после $ unwind и $ match в агрегированном запросе Монго - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь найти и обновить некоторые поля во вложенном массиве объектов. Я выравниваю массивы с помощью $unwind, затем использую $match, чтобы изолировать экземпляры, которые я хочу обновить, но $set, похоже, не работает. Может быть, я не могу использовать его таким образом?

Две записи перед попыткой $set:

[
   {
     _id: 5dabcdf7501b3b4ab66f9f76,
     tasks: {
       _id: 5dabcde5c4a0ab4aa106af7d,
       task: '19',
       name: 'beyond',
       dimension: 'Transformational Leadership',
       subDimension: 'unknown',
       points: 1,
       imgUrl: 'imgs/19.svg',
       text: 'You completed a custom challenge!',
       userId: '5dabcdf7501b3b4ab66f9f76',
       createdAt: '48-Mo:01:48'
     },
     awards: [],
     firstName: 'bob',
     lastName: 'bob',
     location: 'Campbell, USA',
     unit: 'AMSBG',
     group: 3,
     team: 1,
     createdAt: 2019-10-20T03:01:11.071Z,
     updatedAt: 2019-10-29T16:03:54.002Z,
     no_of_tasks: 9,
     points: 9
   },
   {
     _id: 5dabcdf7501b3b4ab66f9f7d,
     tasks: {
       _id: 5dabcde5c4a0ab4aa106af7d,
       task: '19',
       name: 'beyond',
       dimension: 'Transformational Leadership',
       subDimension: 'unknown',
       points: 1,
       imgUrl: 'imgs/19.svg',
       text: 'You completed a custom challenge!',
       userId: '5dabcdf7501b3b4ab66f9f7d',
       createdAt: '48-Mo:01:48'
     },
     awards: [],
     firstName: 'bobette',
     lastName: 'bob',
     location: 'Taiperi',
     unit: 'Finance',
     group: 1,
     team: 1,
     createdAt: 2019-10-20T03:01:11.072Z,
     updatedAt: 2019-10-29T18:24:20.480Z,
     no_of_tasks: 40,
     points: 40
   }
 ]

запроса, как я думал, он должен работать:

const tasks = await User.aggregate([
        { $unwind: '$tasks' },
        { $match: {'tasks.name': foo.name} },
        { $set:
          {'tasks.text': foo.text,
          'tasks.subDimension': foo.subDimension }
        }
    ])

хотел бы получить представление о том, почему он терпит неудачу

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