Клас 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)

Дивіться також

Зміст