MongoDB\Driver\BulkWriteCommand
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
MongoDB\Driver\BulkWriteCommand
Референца за `class.mongodb-driver-bulkwritecommand.php` со подобрена типографија и навигација.
класата MongoDB\Driver\BulkWriteCommand
(mongodb >=2.1.0)
Вовед
MongoDB\Driver\BulkWriteCommand собира една или повеќе операции за запишување што треба да се испратат до серверот користејќи го Извршува една или повеќе операции за запишување на примарниот сервер користејќи ја командата воведена во MongoDB 8.0. Откако ќе додадете кој било број на операции за вметнување, ажурирање и бришење, командата може да се изврши преку (mongodb >=2.1.0).
За разлика од MongoDB\Driver\BulkWrite, каде што сите операции за запишување мора да ја таргетираат истата колекција, секоја операција за запишување во рамките на MongoDB\Driver\BulkWriteCommand може да таргетира различна колекција.
MongoDB\Driver\Manager::executeBulkWrite()
Синопсис на класата
Примери
при други грешки.
Пример #1 Мешани операции за запишување Извршува една или повеќе операции за запишување на примарниот сервер користејќи ја command.
<?php
$manager = new MongoDB\Driver\Manager;
$bulk = new MongoDB\Driver\BulkWriteCommand;
// Delete documents from both collections
$bulk->deleteMany('db.coll_one', []);
$bulk->deleteMany('db.coll_two', []);
// Insert documents into two collections
$bulk->insertOne('db.coll_one', ['_id' => 1]);
$bulk->insertOne('db.coll_two', ['_id' => 2]);
$bulk->insertOne('db.coll_two', ['_id' => 3]);
// Update a document in "coll_one"
$bulk->updateOne('db.coll_one', ['_id' => 1], ['$set' => ['x' => 1]]);
$result = $manager->executeBulkWriteCommand($bulk);
printf("Inserted %d document(s)\n", $result->getInsertedCount());
printf("Updated %d document(s)\n", $result->getModifiedCount());
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
Inserted 3 document(s) Updated 1 document(s)
Ќе резултира со извршување на четири команди за запишување (т.е. заобиколувања). Бидејќи операциите се нарачани, третото вметнување не може да се испрати додека не се изврши претходното ажурирање.
<?php
$manager = new MongoDB\Driver\Manager;
$bulk = new MongoDB\Driver\BulkWriteCommand;
$bulk->deleteMany('db.coll', []);
$bulk->insertOne('db.coll', ['_id' => 1]);
$bulk->insertOne('db.coll', ['_id' => 2]);
$bulk->insertOne('db.coll', ['_id' => 1]);
$bulk->insertOne('db.coll', ['_id' => 3]);
try {
$result = $manager->executeBulkWriteCommand($bulk);
} catch (MongoDB\Driver\Exception\BulkWriteCommandException $e) {
$result = $e->getPartialResult();
var_dump($e->getWriteErrors());
}
printf("Inserted %d document(s)\n", $result->getInsertedCount());
?>Горниот пример ќе прикаже нешто слично на:
array(1) {
[3]=>
object(MongoDB\Driver\WriteError)#5 (4) {
["message"]=>
string(78) "E11000 duplicate key error collection: db.coll index: _id_ dup key: { _id: 1 }"
["code"]=>
int(11000)
["index"]=>
int(3)
["info"]=>
object(stdClass)#6 (0) {
}
}
}
Inserted 2 document(s)
Содржина
- MongoDB\Driver\BulkWriteCommand::__construct — Создадете нов BulkWriteCommand
- MongoDB\Driver\BulkWriteCommand::count — Бројте го бројот на операции за запишување во BulkWriteCommand
- MongoDB\Driver\BulkWriteCommand::deleteMany — Додадете операција deleteMany
- MongoDB\Driver\BulkWriteCommand::deleteOne — Додадете операција deleteOne
- MongoDB\Driver\BulkWriteCommand::insertOne — Додадете операција insertOne
- MongoDB\Driver\BulkWriteCommand::replaceOne — Додадете операција replaceOne
- MongoDB\Driver\BulkWriteCommand::updateMany — Додадете операција updateMany
- MongoDB\Driver\BulkWriteCommand::updateOne — Додадете операција updateOne