db.collection.initializeOrderedBulkOp()
提示
MongoDB 还提供了用于执行批量写入操作的 db.collection.bulkWrite()
方法。
定义
db.collection.initializeOrderedBulkOp()
重要
mongosh 方法
本页面提供
mongosh
方法的相关信息。这不是特定于语言的驱动程序(例如 Node.js)的文档。如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。
为集合初始化并返回新的
Bulk()
操作构建器。该构建者可以构造 MongoDB 批量执行的写入操作的有序列表。返回: 新的 Bulk()
操作构建器对象。
行为
操作顺序
对于有序操作列表,MongoDB 会按顺序执行列表中的写入操作。
执行操作
执行 ordered
操作列表时,MongoDB 按 operation type
和连续性对操作进行分组;也就是说,相同类型的连续操作会被分为一组。例如,如果序列表有两个插入操作,后跟一个更新操作,然后是另一个插入操作,则 MongoDB 将这些操作分为三个单独的组:第一组包含两个插入操作,第二组包含更新操作,第三组包含最后一次插入操作。这种行为在未来版本中可能会有所更改。
mongosh
中的 Bulk()
操作以及驱动程序中的类似方法对群组中的操作数量不设限制。要了解如何对这些操作进行分组以执行批量操作,请在执行后调用 Bulk.getOperations()
。
在分片集合上执行操作的 ordered
列表通常比执行 unordered
列表慢,因为对于有序列表,每个操作都必须等待前一个操作完成。
Error Handling
如果在处理其中的一个写入操作期间出现错误,MongoDB 将返回而不处理列表中的任何其余写入操作。
示例
Bulk()
users
以下示例在collection上初始化 操作构建器,添加一系列写入操作,并执行这些操作:
var bulk = db.users.initializeOrderedBulkOp(); bulk.insert( { user: "abc123", status: "A", points: 0 } ); bulk.insert( { user: "ijk123", status: "A", points: 0 } ); bulk.insert( { user: "mop123", status: "P", points: 0 } ); bulk.find( { status: "D" } ).delete(); bulk.find( { status: "P" } ).update( { $set: { comment: "Pending" } } ); bulk.execute();