BulkWrite Mongo с updateOne + upsert работает в первый раз, но в последующие разы выдает повторяющуюся ошибку ключа.Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 BulkWrite Mongo с updateOne + upsert работает в первый раз, но в последующие разы выдает повторяющуюся ошибку ключа.

Сообщение Anonymous »

Я использую библиотеку Mongo-php для вставки большого количества документов в свою коллекцию (с помощью BulkWrite). Я хочу, чтобы документы обновлялись, если они уже существуют, или вставлялись, если это не так, поэтому я использую «upsert = true».
Код работает нормально с первого раза. Я запускаю его (он вставляет документы), но при втором запуске выдает следующую ошибку:

Код: Выделить всё

Fatal error: Uncaught MongoDB\Driver\Exception\BulkWriteException: E11000 duplicate key error collection: accounts.posts index: postid dup key: { id: "2338...
Я не вижу ничего плохого в моем коде. Я уже просмотрел все сообщения SO, но ни один из них не помог.
Это мой код:

Код: Выделить всё

// I prepare the array $post_operations with all updateOne operations
// where $data is an object that contains all the document elements I want to insert

$posts_operations = array();
foreach ($this->posts as $id => $data) {
array_push($posts_operations, array('updateOne' => [['id' => $id], ['$set' => $data], ['upsert' => true]]));
}

// Then I execute the method bulkWrite to run all the updateOne operations
$insertPosts = $account_posts->bulkWrite($posts_operations);
Он работает в первый раз (когда он вставляется), но не работает во второй раз (когда он должен обновиться).
Я иметь уникальный индекс, настроенный в коллекции для 'id'.
Большое спасибо за вашу помощь.

Подробнее здесь: https://stackoverflow.com/questions/630 ... es-duplica
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»