Вставить встроенный документ в существующий документ в MongoDB - PullRequest
1 голос
/ 05 августа 2011

У меня есть документ с такой структурой:

Product (root)
   Document1 (embedded)
   Document2
   ...
   DocumentN
      Part1  (embedded)
      Part2
      ...
      PartN

У меня есть POCO, сопоставленные со структурой. В какой-то момент пользователь создает Продукт, который сразу же сохраняется в базе данных. Затем пользователь создает документ, после чего сущность Product снова сохраняется в базе данных (как я понимаю, он должен выполнить обновление, поскольку сущность Product уже существует в БД). Однако, когда я создаю N-й документ внутри продукта и пытаюсь сохранить его, я получаю сообщение об ошибке, которое пытаюсь загрузить слишком много (максимальный размер загружаемого файла составляет 16 МБ).

Как я могу обновить документ Продукта, чтобы я мог вставить (загрузить) только новый Документ в Продукт вместо того, чтобы снова загружать весь продукт в базу данных?

Спасибо!

1 Ответ

0 голосов
/ 06 августа 2011

Вам нужно использовать upserts.Вы делаете это через обновление и указываете, что это должно быть upsert.Это позволит вам устанавливать / обновлять определенные свойства без указания всего объекта.

При условии, что у ваших продуктов есть поле productId, которое вы будете использовать для определения, какой продукт обновлять:

db.products.update( { "productId":1234 }, { $set: { document1: { part1: "foo" } } }, true );

Последний параметр (true) указывает, что это упадок.У вашего водителя может быть несколько иной способ обозначить упущение.

...