【发布时间】:2012-08-23 02:17:32
【问题描述】:
我正在从 RETS(XML) 提要中提取数据,并使用 node 和 mongoose 将其保存在本地 MongoDB 中。
我需要定期更新文档并删除不活动的文档以及添加新文档。我没有对 Mongo 或 RETS 服务器进行多次查询,而是同时拉取并循环访问数据。
这很好用,但是有没有办法通过更新和插入将 Mongoose 结果保存回数据库?还是我需要找到每个文档并单独更新?
【问题讨论】:
我正在从 RETS(XML) 提要中提取数据,并使用 node 和 mongoose 将其保存在本地 MongoDB 中。
我需要定期更新文档并删除不活动的文档以及添加新文档。我没有对 Mongo 或 RETS 服务器进行多次查询,而是同时拉取并循环访问数据。
这很好用,但是有没有办法通过更新和插入将 Mongoose 结果保存回数据库?还是我需要找到每个文档并单独更新?
【问题讨论】:
为了完整性,如果任何人有多个查询条件,并且想为每个查询条件匹配的文档添加新字段,那么我们可以使用
var bulk = Person.collection.initializeUnorderedBulkOp();
bulk.find(query1).update(update1);
bulk.find(query2).update(update2);
bulk.execute(callback);
在以下文档中,据说db.collection.initializeUnorderedBulkOp()
初始化并返回一个新的 Bulk() 操作构建器 收藏。 builder构造一个write的无序列表 MongoDB 批量执行的操作。 MongoDB 执行于 并行列表中的写操作。
https://docs.mongodb.org/v3.0/reference/method/db.collection.initializeUnorderedBulkOp/
【讨论】:
在 MongoDB 上,要使用 Mongoose 更新多个文档(不仅仅是一个),您可以使用 multi 选项:
Model.updateMany({
size: 'lage'
}, {
$set: { size: 'large' }
});
在 updating documents 和 here 的 Mongoose 文档中查看更多信息
【讨论】:
{ multi: true } 选项。如所述here