📅  最后修改于: 2020-11-23 01:29:40             🧑  作者: Mango
MongoDB批量方法用于执行批量操作,例如批量写入和批量删除。
initializeOrderBulkOp,并为集合提供一个新的Bulk()操作生成器。它构建MongoDB批量运行的写操作的有序列表。
接下来,他将在users集合上初始化Bulk()操作构建器,添加一系列写操作,然后执行这些操作:
var bulk = db.users.initializeOrderedBulkOp();
bulk.insert( { user: "John", status: "A", points: 0 } );
bulk.insert( { user: "Peter", status: "A", points: 0 } );
bulk.insert( { user: "Clint", status: "B", points: 0 } );
bulk.find( { status: "D" } ).remove();
bulk.find( { status: "B" } ).update( { $set: { comment: "Awaited" } } );
bulk.execute();
该方法将启动,并为该集合提供一个新的Bulk()操作生成器。它构建MongoDB批量运行的无序写入操作列表。
例如:
以下代码初始化Bulk()操作构建器,并添加一系列插入操作以添加多个文档:
var bulk = db.users.initializeUnorderedBulkOp();
bulk.insert( { user: "John", status: "A", points: 0 } );
bulk.insert( { user: "Peter", status: "A", points: 0 } );
bulk.insert( { user: "Clint", status: "B", points: 0 } );
bulk.execute();
批量方法可用于创建写操作列表,以对一个集合批量执行。要使建造者不满意,请使用
db.collection.initializeOrderedBulkOp() or the db.collection.initializeUnorderedBulkOp() method.
Bulk()构建器具有以下方法:
Bulk.insert() | It can be used to add an insert operation inside the list of operations. |
Bulk.find() | It specifies the query condition for a remove or an update operation. |
Bulk.find.removeOne() | It adds a remove operation to a list of operations for a single document. |
Bulk.find.remove() | It adds remove operation to a list of operations for multiple document. |
Bulk.find.replaceOne() | It adds a document replacement operation to a numbers of operations. |
Bulk.find.updateOne() | It adds a single document update operation to an array of operations. |
Bulk.find.update() | It adds a multi update operation to an array of operations. |
Bulk.find.upsert() | It can be used to specify upsert that is true for an update operation. |
Bulk.execute() | It executes an array of operations in bulk. |
Bulk.getOperations() | It gives an array of write operations executed in the Bulk() operations object. |
Bulk.tojson() | It returns a JSON document that have the number of operations and batches in the Bulk() operations object. |
Bulk.toString() | It gives the Bulk.tojson() results as a string. |
它运行由Bulk()方法构建器构建的操作列表。
例如:
执行批量方法
以下代码在items集合上初始化Bulk()操作构建器,添加一系列插入操作,并执行这些操作:
var bulk = db.items.initializeUnorderedBulkOp();
bulk.insert( { item: "abc123", status: "A", defaultQty: 500, points: 5 } );
bulk.insert( { item: "ijk123", status: "A", defaultQty: 100, points: 10 } );
bulk.execute( );
The operation returns the following BulkWriteResult() object:
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : 2,
"nUpserted" : 0,
"nMatched" : 0,
"nModified" : 0,
"nRemoved" : 0,
"upserted" : [ ]
})
它可用于指定更新或删除操作的查询条件。使用查询选择器指定查询条件,以选择文档进行更新或删除操作。要指定所有文档,请使用空文档{}。
Bulk.find()可以与以下write命令操作一起使用:
Bulk.find.removeOne()
Bulk.find.remove()
Bulk.find.replaceOne()
Bulk.find.updateOne()
Bulk.find.update()
例如:
下面给出的示例为items集合初始化Bulk()操作构建器,并添加一个remove操作。还将操作更新为操作列表。使用help Bulk.find()方法删除操作并更新操作,为它们各自的动作指定条件:
var bulk = db.items.initializeUnorderedBulkOp();
bulk.find( { status: "D" } ).remove();
bulk.find( { status: "P" } ).update( { $set: { points: 0 } } )
bulk.execute();
它将删除操作添加到批量操作列表中。 Bulk.find()方法可用于指定条件,该条件确定要删除的文档。 Bulk.find.remove()从集合中删除所有匹配的文档。
下面给出的示例为items集合初始化Bulk()操作构建器,并添加remove操作。删除操作可用于删除状态为“ D”的集合中的所有文档:
var bulk = db.items.initializeUnorderedBulkOp();
bulk.find( { status: "D" } ).remove();
bulk.execute();
它可用于将单个文档替换操作添加到批量操作列表中。使用此方法可以指定确定必须替换的文档的条件。该方法将替换限制为单个文档。
完全替换现有文档的替换文档。仅包含字段和值对。
例如
下面给出的示例初始化items集合的Bulk()操作构建器,并将各种replaceOne操作添加到操作列表中。
var bulk = db.items.initializeUnorderedBulkOp();
bulk.find( { item: "abc123" } ).replaceOne( { item: "abc123", status: "P", points: 100 } );
bulk.execute();
它可用于将多次更新操作添加到批量操作列表中。该方法更新现有文件的特定字段。
Bulk.find()方法可用于指定确定需要更新的文档的条件。该方法更新所有匹配的文档。
例如:
下面的示例初始化items集合的Bulk()操作构建器,并将各种多重更新操作添加到操作列表中。
var bulk = db.items.initializeUnorderedBulkOp();
bulk.find( { status: "D" } ).update( { $set: { status: "I", points: "0" } } );
bulk.find( { item: null } ).update( { $set: { item: "TBD" } } );
bulk.execute();
它可用于将插入操作添加到批量操作列表中。
例如:
该示例为items集合初始化Bulk()操作构建器,并添加一系列插入操作以添加多个文档:
var bulk = db.items.initializeUnorderedBulkOp();
bulk.insert( { item: "abc123", defaultQty: 100, status: "A", points: 100 } );
bulk.insert( { item: "ijk123", defaultQty: 200, status: "A", points: 200 } );
bulk.insert( { item: "mop123", defaultQty: 0, status: "P", points: 0 } );
bulk.execute();
它可用于以字符串形式返回JSON文档的输出,该文档包含Bulk()对象内的操作和批处理数量。
例如
下面的示例在items集合上初始化Bulk()操作构建器,添加一系列写入操作,并在批量构建器对象上调用Bulk.toString()。
var bulk = db.items.initializeOrderedBulkOp();
bulk.insert( { item: "abc123", status: "A", defaultQty: 500, points: 5 } );
bulk.insert( { item: "ijk123", status: "A", defaultQty: 100, points: 10 } );
bulk.find( { status: "D" } ).removeOne();
bulk.toString();