Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在MongoDB NodeJS中一次查询中更新多条记录,无需任何循环_Node.js_Mongodb - Fatal编程技术网

Node.js 在MongoDB NodeJS中一次查询中更新多条记录,无需任何循环

Node.js 在MongoDB NodeJS中一次查询中更新多条记录,无需任何循环,node.js,mongodb,Node.js,Mongodb,我有一个对象数组,我想在一个查询中更新所有记录 var arrayObj=[ {id:'5e346213bec252771415a9ee', status:1, date:01-2-2020},{id:'5e346213bec252471415a9efr', status:2, date:02-2-2020}, {id:'5e346213bec252771415a9ee',

我有一个对象数组,我想在一个查询中更新所有记录

var arrayObj=[
         {id:'5e346213bec252771415a9ee',
         status:1,
         date:01-2-2020},{id:'5e346213bec252471415a9efr',
         status:2,
         date:02-2-2020},
         {id:'5e346213bec252771415a9ee',
         status:3,
         date:01-3-2020}];

Leads.update();

我是node和mongo的新手,我如何更新它。我不想使用loop,因为我已经使用了loop。现在我想学习这一点。

我想说的是:

  • 您不能以这种方式进行批量更新,只需将许多对象传递给某个神奇的函数
  • MongoDb是一个面向文档的数据库,所以它不是标准化的。要更新某些文档,需要传递说明(要更新的位置和内容)
  • 如果您有一个数组,则需要一个循环函数来更新每个数组项
  • 不可能(没有第三方库)在没有循环的情况下更新许多文档。我发送的链接解释了正确的方法
  • 你可以用

    var bulkOpr=.initializeUnderedBulkop();
    bulkOpr.find({u id:1}).updateOne({/*updatedocument*/});
    bulkOpr.find({u id:2}).updateOne({/*updatedocument*/});
    //等
    bulkOp.execute();
    
    您可以做任何需要做的事情,而数据库可以一次完成这一切

    参考链接:


    我正在等待答复…请回复朋友此问题已在此处解决:谢谢您的评论…请阅读我的问题…您的重新读取链接未完全满足我的要求。我对每个记录都有不同的值…@rpereira15我想用自己的值更新所有记录使用此解决方案,他还需要一个循环。批量策略只是同时执行所有更新。@rpereira15循环仅用于准备查询,批量操作只执行一次。我同意这种方法,但是,如果您阅读Ali的评论,him不想构建循环。他希望挂载一个数组并将其传递给更新。
    var bulkOpr = <collectionName>.initializeUnorderedBulkOp();
    
    bulkOpr.find({ _id: 1 }).updateOne({ /* update document */ });
    bulkOpr.find({ _id: 2 }).updateOne({ /* update document */ });
    // etc
    
    bulkOp.execute();