使用Mongoose进行批量更新

时间:2012-08-28 14:29:11

标签: node.js mongodb mongoose

我从RETS(XML)提要中提取数据并使用node和mongoose将其保存在本地MongoDB中。

我需要定期更新文档并删除不活动的文档以及添加新文档。我没有对Mongo或RETS服务器进行多次查询,而是将两者都拉出来并循环遍历数据。

这样可以正常工作,但有没有办法将Mongoose结果保存回数据库并进行更新和插入?或者我是否需要找到每个文档并单独更新?

2 个答案:

答案 0 :(得分:13)

要使用Mongoose更新MongoDB上的多个文档(不只是一个),您可以使用 multi 选项:

Model.update({ 
  field_that_matches_many_docs: ninja_variable 
}, { 
  $set: { size: 'large' }
}, { 
  multi: true 
}, callback);

有关updating documentshere

的Mongoose文档中的详情,请参阅

答案 1 :(得分:2)

为了完整性,如果任何一个具有多个查询条件并且想要为查询条件的每个匹配文档添加新字段,那么我们可以使用

 var bulk = Person.collection.initializeUnorderedBulkOp();
   bulk.find(query1).update(update1);
   bulk.find(query2).update(update2);
   bulk.execute(callback);

在以下文档中据说db.collection.initializeUnorderedBulkOp()

  

初始化并返回一个新的Bulk()操作构建器   采集。构建器构造一个无序的写入列表   MongoDB批量执行的操作。 MongoDB在中执行   并行列表中的写操作。

https://docs.mongodb.org/v3.0/reference/method/db.collection.initializeUnorderedBulkOp/