MongoDB 批量操作方法

MongoDB 批量操作方法

MongoDB的批量方法用于执行批量写入和批量删除等批量操作。

db.collection.initializeOrderBulkOp()

initializeOrderBulkOp方法为集合提供一个新的Bulk()操作构建器。它构建了一个有序的写操作列表,可以批量运行。

以下是在用户集合上初始化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();

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

Bulk()方法

Bulk方法可以用于创建一个集合中的批量写操作列表。要将构建器转化为对象,请使用以下方式之一

db.collection.initializeOrderedBulkOp() or the db.collection.initializeUnorderedBulkOp() method.

The Bulk()构建器具有以下方法:

Bulk.insert() 可以将插入操作添加到操作列表中。
Bulk.find() 用于指定删除或更新操作的查询条件。
Bulk.find.removeOne() 将删除操作添加到单个文档的操作列表中。
Bulk.find.remove() 将删除操作添加到多个文档的操作列表中。
Bulk.find.replaceOne() 将文档替换操作添加到操作列表中。
Bulk.find.updateOne() 将单个文档更新操作添加到操作数组中。
Bulk.find.update() 将多个文档更新操作添加到操作数组中。
Bulk.find.upsert() 用于指定更新操作的upsert为true。
Bulk.execute() 执行操作数组中的操作。
Bulk.getOperations() 返回在Bulk()操作对象中执行的写操作数组。
Bulk.tojson() 返回一个JSON文档,其中包含Bulk()操作对象中的操作数量和批次数。
Bulk.toString() 将Bulk.tojson()的结果以字符串形式返回。

Bulk.execute()方法

它运行由Bulk()方法构建器构建的操作列表。

例如:

执行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() 方法

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

Bulk.find() 可与以下写命令操作一起使用:

Bulk.find.removeOne()
Bulk.find.remove()
Bulk.find.replaceOne()
Bulk.find.updateOne()
Bulk.find.update()

例如:

下面的示例初始化了一个用于items集合的Bulk()操作构建器,并添加了一个删除操作。它还将更新操作添加到操作列表中。使用Bulk.find()方法,删除操作和更新操作分别指定了它们的条件:

var bulk = db.items.initializeUnorderedBulkOp();
bulk.find( { status: "D" } ).remove();
bulk.find( { status: "P" } ).update( { $set: { points: 0 } } )
bulk.execute();

Bulk.find.remove() 方法

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

下面的示例初始化了一个用于 items 集合的 Bulk() 操作构建器,并添加了删除操作。可以使用删除操作来删除集合中所有状态等于 “D” 的文档。

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

Bulk.find.replaceOne() 方法

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

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

例如

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

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

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

Bulk.insert()方法

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

例如:

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

Bulk.toString()

可以用来将Bulk()对象中的操作和批次作为一个JSON文件返回成字符串的形式。

例如

以下示例在items集合上初始化了一个Bulk()操作构建器,添加了一系列的写操作,并在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();

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程