使用Mongoose批量更新

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

我需要定期更新文档并删除不活动的文档以及添加新文档。 而不是多个查询到Mongo或RETS服务器,我拉着两个循环的数据。

这工作正常,但有没有办法将Mongoose结果保存到数据库更新和插入? 还是我需要find每个文件,并单独更新?

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

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

有关更新文档的信息 ,请参阅Mongoose文档中的更多内容

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

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

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

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

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