使用Mongoose进行批量更新

jab*_*key 8 mongoose mongodb node.js

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

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

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

Gia*_* P. 14

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

Model.updateMany({ 
  size: 'lage'
}, { 
  $set: { size: 'large' }
});
Run Code Online (Sandbox Code Playgroud)

查看更多关于猫鼬文档中的更新文档这里


San*_*rma 6

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

var bulk = Person.collection.initializeUnorderedBulkOp();
bulk.find(query1).update(update1);
bulk.find(query2).update(update2);
bulk.execute(callback);
Run Code Online (Sandbox Code Playgroud)

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

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

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