📜  MongoDB批量操作方法

📅  最后修改于: 2020-11-23 01:29:40             🧑  作者: Mango

MongoDB批量操作方法

MongoDB批量方法用于执行批量操作,例如批量写入和批量删除。

#1 db.collection.initializeOrderBulkOp()

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();

#2。 db.collection.initializeUnorderedBulkOp()

该方法将启动,并为该集合提供一个新的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();

#3。 Bulk()方法

批量方法可用于创建写操作列表,以对一个集合批量执行。要使建造者不满意,请使用

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.

#4。 Bulk.execute()方法

它运行由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" : [ ]
})

#5。批量查找( ) 方法

它可用于指定更新或删除操作的查询条件。使用查询选择器指定查询条件,以选择文档进行更新或删除操作。要指定所有文档,请使用空文档{}。

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();

#6。 Bulk.find.remove()方法

它将删除操作添加到批量操作列表中。 Bulk.find()方法可用于指定条件,该条件确定要删除的文档。 Bulk.find.remove()从集合中删除所有匹配的文档。

下面给出的示例为items集合初始化Bulk()操作构建器,并添加remove操作。删除操作可用于删除状态为“ D”的集合中的所有文档:

var bulk = db.items.initializeUnorderedBulkOp();
bulk.find( { status: "D" } ).remove();
bulk.execute();

#7。 Bulk.find.replaceOne( ) 方法

它可用于将单个文档替换操作添加到批量操作列表中。使用此方法可以指定确定必须替换的文档的条件。该方法将替换限制为单个文档。

完全替换现有文档的替换文档。仅包含字段和值对。

例如

下面给出的示例初始化items集合的Bulk()操作构建器,并将各种replaceOne操作添加到操作列表中。

var bulk = db.items.initializeUnorderedBulkOp();
bulk.find( { item: "abc123" } ).replaceOne( { item: "abc123", status: "P", points: 100 } );
bulk.execute();

#8。 Bulk.find.update( ) 方法

它可用于将多次更新操作添加到批量操作列表中。该方法更新现有文件的特定字段。

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();

#9。批量插入) 方法

它可用于将插入操作添加到批量操作列表中。

例如:

该示例为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();

#10。 Bulk.toString()

它可用于以字符串形式返回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();