Клас MongoDB\Driver\BulkWrite
(mongodb >=1.0.0)
Вступ
КлассMongoDB\Driver\BulkWrite збирає одну або кілька операцій запису, які мають бути надіслані на сервер. Після додавання будь-якої кількості операцій вставки, оновлення або видалення колекція може бути виконана за допомогою MongoDB\Driver\Manager::executeBulkWrite()
Операції запису можуть бути відсортовані (за замовчуванням) або відсортовані. Відсортовані операції запису надсилаються на сервер у вказаному порядку для послідовного виконання. У разі виникнення помилки запису, будь-які операції, що залишилися, будуть перервані. Невідсортовані операції надсилаються на сервер у довільному порядку, де вони можуть виконуватися паралельно. Повідомлення про помилки, які виникають, будуть надіслані після виконання всіх операцій.
Огляд класів
final
class MongoDB\Driver\BulkWrite
implements
Countable {
/* Методы */
public __construct(?array $options = null)
public count(): int
public delete(array|object $filter, ?array $deleteOptions = null): void
public insert(array|object $document): mixed
public update(array|object $filter, array|object $newObj, ?array $updateOptions = null): void
}
Приклади
Приклад #1 Змішані операції групуються за типом
Змішані операції запису (тобто додавання, оновлення або видалення) будуть зібрані в типізовані команди запису, які будуть послідовно відправлені на сервер.
Loading...
В результаті буде виконано чотири команди запису (тобто звернень). Оскільки операції відсортовані, третя вставка не може бути надіслана, доки не буде виконано попереднє оновлення.
Приклад #2 Відсортовані операції запису, що викликають помилку
Loading...
Результат виконання наведеного прикладу:
Operation#7: E11000 duplicate key error index: db.collection.$_id_ dup key: { : 3 } (11000)
Добавлено 4 документ(ов)
Обновлено 2 документ(ов)
Якщо гарантія запису не може бути виконана, результат наведеного вище прикладу буде щось на кшталт цього:
waiting for replication timed out (64): array (
'wtimeout' => true,
)
Operation#7: E11000 duplicate key error index: databaseName.collectionName.$_id_ dup key: { : 3 } (11000)
Inserted 4 document(s)
Updated 2 document(s)
Якщо ми виконаємо приклад вище, але розв'яжемо невідсортовані записи:
Loading...
Результат виконання наведеного прикладу:
Operation#7: E11000 duplicate key error index: db.collection.$_id_ dup key: { : 3 } (11000)
Operation#8: E11000 duplicate key error index: db.collection.$_id_ dup key: { : 4 } (11000)
Inserted 5 document(s)
Updated 2 document(s)
Дивіться також
- MongoDB\Driver\Manager::executeBulkWrite()
- MongoDB\Driver\WriteResult
- MongoDB\Driver\WriteConcern
- MongoDB\Driver\WriteConcernError
- MongoDB\Driver\WriteError
Зміст
- MongoDB\Driver\BulkWrite::__construct— Створює новий об'єкт BulkWrite
- MongoDB\Driver\BulkWrite::count - Підраховує кількість операцій запису в порції
- MongoDB\Driver\BulkWrite::delete— Додавання операції видалення порції
- MongoDB\Driver\BulkWrite::insert - Додати операцію вставки в порцію
- MongoDB\Driver\BulkWrite::update— Додати операцію оновлення до порції