sql >> Database >  >> NoSQL >> MongoDB

MongoDB en upsert-probleem

Ten eerste lijkt het er helemaal niet op dat je een upsert doet. De syntaxis daarvoor in Java API zou een derde argument voor db.update hebben ingesteld op true.

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

Je zou ook geen $push moeten doen - de semantiek van wat je zegt dat je wilt doen in mongo-shell zou zijn:

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

Dit zegt:als resourceVacation met resourceID bestaat, maak dan zijn "vacationList" aan wat ik je geef. Als het niet bestaat, voeg dan dit record in.

Als u Java API rechtstreeks zou gebruiken, zou het equivalent van het bovenstaande voldoende zijn.

Het lijkt erop dat je MongoTemplate van Spring gebruikt. U moet controleren welke versie ervan u gebruikt, omdat deze geen upserts toestaat . Dat probleem is echter gemarkeerd als opgelost. Als je vastzit aan de oudere versie, dan is er een oplossing beschreven hier .

Als je de laatste versie hebt, zou je de nieuw toegevoegde upsert-methode rechtstreeks moeten kunnen gebruiken, zoals beschreven hier .



  1. MongoDB-hostingopties nu de Heroku mLab-add-on wordt verwijderd

  2. Mongodb eenvoudige prefix-query met regex en sorteren is traag

  3. maak een veilige database in mongodb

  4. MongoDB en fulltext zoeken deel van het woord