在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" } } );
答案 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()
,因为它会有效地排出"排出"操作队列。