来自Mongodb中Json数组请求主体的updateMany

时间:2019-05-14 10:34:13

标签: node.js mongodb

这是我的请求正文

{"old":[{"coba": "A"}, {"cobak": "B"}], "new":[{"coba": "C"},{"cobak": "D"}]}

这是我的代码

  function getOld(){

        const data = request.body; 
        for(i = 0; i < data.old.lenght; i++) { 
            return data.old[i]
        }
   }

    function getNew(){ 

        const data = request.body; 
        for(i = 0; i < data.new.lenght; i++) { 
            return data.new[i]
        }
    }

    const reqOld = getOld();
    const reqNew = getNew();

    db.cb.updateMany({$and: [reqOld]}, {$set: reqNew}, {upsert: false}, (error, data));

问题是将第一个请求正文更新为JSON数组,并且无法更新所有文档

1 个答案:

答案 0 :(得分:0)

  1. 看一下lenght的拼写。
  2. 用旧阵列和新阵列进行更新似乎令人困惑。您应该可以只使用更新和_id
  3. 您可能想编写一个循环遍历所有项目。下面是伪代码-很难说出您实际上在试图做什么
(async () => {
  for (let i = 0; i < request.body.old.length; i++) {
    const newItem = request.body.new[i];
    const oldItem = request.body.old[i];
    await db.cb.update(oldItem, {$set: newItem });
  }
})()