使用猫鼬将一个对象(存在于数组中)从一个文档移动到另一文档数组

时间:2019-01-09 05:54:27

标签: arrays node.js mongodb mongoose mongodb-query

我有一个收集任务,其中包含一个名为demo(对象数组)的字段。我想将一个对象(基于id的搜索)从演示(从一个Task文档)移动到另一个Task文档的demo字段(根据“ number”字段搜索另一个文档)。

结构- 任务收集-

[ 
 {
  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 });

我的解决方案工作正常。但是我正在使用两个查询。还有其他选择吗?

0 个答案:

没有答案