ari*_*its 8 bulk mongodb node.js
这两种方法有什么区别,我应该使用哪种方法?
https://docs.mongodb.com/manual/reference/method/db.collection.initializeUnorderedBulkOp/
https://docs.mongodb.com/manual/reference/method/db.collection.initializeOrderedBulkOp/
区别主要在于用法。bulkWrite接受一系列操作并立即执行它。
initializeOrderedBulkOp并initializeUnorderedBulkOp返回一个实例,该实例可用于逐渐构建查询并最终使用该execute函数执行它。
聚会迟到了,但我也有类似的困惑,所以做了一些挖掘。
区别在于API的实现和使用。
bulkWrite根据 API 参考,
无需流畅的 API 即可执行批量写入操作
在此方法中,您直接传入“写操作”数组作为第一个参数。请参阅此处的示例。我认为流畅的 API意味着您没有将您的操作与您的操作或操作完全分开。每个操作都在一个数组中。updateinsertdelete
一个关键点是这些操作是立即执行的。
正如问题中所指出的,默认情况下执行是有序的,但可以通过设置{ ordered: false }第二个参数(一组选项)将其更改为无序。
该函数的返回值BulkWriteResult包含有关执行的批量操作的信息。
initializeOrderedBulkOp和initializeUnorderedBulkOp再次参考API参考,
启动按顺序批量写入操作
正如这里所说,这些方法初始化/返回一个实例,该实例提供用于构建块操作的 API。这些实例分别属于类OrderedBulkOperation和UnorderedBulkOperation。
const bulk = db.items.initializeUnorderedBulkOp();
// `bulk` is of the type UnorderedBulkOperation
Run Code Online (Sandbox Code Playgroud)
该bulk变量提供了一个“流畅的 API”,允许您跨应用程序构建查询:
bulk.find( { /** foo **/ } ).update( { $set: { /** bar **/ } } );
Run Code Online (Sandbox Code Playgroud)
请记住,这些查询不会在上面的代码中执行。您可以继续构建整个操作,当所有写入操作都被“调用”时,我们最终可以执行查询:
bulk.execute();
Run Code Online (Sandbox Code Playgroud)
该execute函数返回一个BulkWriteResult实例,这基本上就是bulkWrite返回的内容。我们的数据库终于改变了。
这取决于您的要求。
如果您想使用现有数组中的单独查询和值来更新大量文档,这bulkWrite似乎是一个不错的选择。如果您想通过相当复杂的业务逻辑构建批量操作,那么其他选项很有意义。请注意,您可以通过逐渐构建全局数组并将其最后传递给 来实现相同的目的bulkWrite。
| 归档时间: |
|
| 查看次数: |
367 次 |
| 最近记录: |