基于更改mongodb中的查找/查询的批量更新

时间:2015-05-25 00:01:01

标签: mongodb bulkupdate

在MongoDB中,我知道可以像这样进行批量更新:

bulk.find( { status: "D" } ).update( { $set: { status: "I", points: "0" } } );

这将匹配所有具有"状态的文件" " D"。

是否可以执行find部分始终在变化的类似操作?

换句话说,我可以在一次操作中完成所有操作吗?

bulk.find( { status: "A" } ).update( { $set: { status: "X", points: "1" } } );
bulk.find( { status: "B" } ).update( { $set: { status: "Y", points: "2" } } );
bulk.find( { status: "C" } ).update( { $set: { status: "Z", points: "3" } } );

1 个答案:

答案 0 :(得分:0)

是的,当然有可能,并且在很大程度上是Bulk()一般操作的重点。

您的商家信息中实际发生了什么:

bulk.find( { status: "A" } ).update( { $set: { status: "X", points: "1" } } );
bulk.find( { status: "B" } ).update( { $set: { status: "Y", points: "2" } } );
bulk.find( { status: "C" } ).update( { $set: { status: "Z", points: "3" } } );

操作实际上是排队"排队"或者"批量"在尚未在服务器上执行的指令中。

只有在实际调用指令时才会发送到服务器并在服务器上执行的操作:

bulk.execute()

响应将包含操作的结果以及可能的任何错误,具体取决于initializeOrderedBulkOp()initializeUnonderedBulkOp()是否是为初始化批量操作而调用的操作。

请注意,一旦调用.execute(),您需要重新初始化,然后再添加进一步的操作并再次调用.execute(),因为它会有效地排出"排出"操作队列。