переместить один объект (представленный в массиве) из одного документа в другой массив документов с помощью mongoose - PullRequest
0 голосов
/ 09 января 2019

У меня есть Задача коллекции, в которой есть поле с именем demo (массив объектов). Я хочу переместить объект (поиск на основе идентификатора) из демонстрации (из одного документа задачи) в другое демонстрационное поле документа задачи (поиск другого документа на основе поля «число»).

Структура - Сборник заданий -

[ 
 {
  number: 'abc',
  demo: [
   {
     _id: ObjectId('5b33792cfee1940010cce1f4'),
     number:'abc'
   }, // **move this object** 
   ....
  ]
 },
 {
  number: 'def',
  demo: [
   {
     _id: ObjectId('5b33792cfee1940010cce5'),
     number:'def'
   },
   ....// **move that object here and change it's number to def**
  ]
 },
....

]

Я уже пробовал это - Я извлекаю объект демонстрационного массива из одного документа и помещаю его в демонстрационный пример другого документа.

let task = await Task.findOneAndUpdate(
    { "demo": { $elemMatch: { _id: id } } },
    { $pull: { "demo": { _id: id } } },
  ).lean();
// find on basis of id 
  let demo = task.demo.filter(t => t._id == id)[0];
  demo.number = to;
  let res = await Task.findOneAndUpdate({ number: to }, { "$push": { "demo": demo} }, { new: true });

Мое решение работает просто отлично. Но я использую два запроса. Есть ли другая альтернатива?

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