MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Проблем с MongoDB и upsert

Първо, изобщо не изглежда, че правите upsert. Синтаксисът за това в Java API ще има трети аргумент за db.update, зададен на true.

   db.update(com.mongodb.DBObject, com.mongodb.DBObject, boolean /*upsert */, boolean /* multi */)

Не трябва да правите и $push - семантиката на това, което казвате, че искате да направите в mongo shell, ще бъде:

db.collection.update( {"resourceVacation":resourceID}, {$set:{"vacationList":[...]}, true)

Това казва:ако съществува resourceVacation с resourceID, тогава направете неговия "vacationList" това, което ви давам. Ако не съществува, вмъкнете този запис.

Ако използвате Java API директно, еквивалентът на горното би бил достатъчен.

Изглежда, че използвате MongoTemplate от Spring. Ще трябва да проверите коя негова версия използвате, защото не е използвала, за да разреши upserts . Този проблем обаче е маркиран като разрешен. Ако сте останали на по-старата версия, тогава има описано заобиколно решение тук .

Ако сте на най-новия, трябва да можете да използвате директно добавения метод upsert, както е описано тук .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Проектиране на резултати от MongoDb Find във F#

  2. Актуализация на MongoDB:Генерирайте ново поле въз основа на съществуващо поле или актуализирайте на място

  3. Внедряване на приложението Meteor на собствен сървър

  4. MongoDB c# извлича всички съответстващи елементи в масив в рамките на документ с помощта на Definition builder

  5. как да избегнете $push-ing нули в рамката за агрегиране на mongo