2015-04-03 21 views
16

Sto passando alla versione del driver Java MongoDB 3. Non riesco a capire come eseguire un aggiornamento di un documento. Per esempio, io voglio cambiare il "età" di un utente:Aggiornamento MongoDB utilizzando il driver Java 3

MongoDatabase db = mongoClient.getDatabase("exampledb"); 
MongoCollection<org.bson.Document> coll = db.getCollection("collusers"); 

Document doc1 = new Document("name", "frank").append("age", 55) .append("phone", "123-456-789"); 
Document doc2 = new Document("name", "frank").append("age", 33) .append("phone", "123-456-789"); 
coll.updateOne(doc1, doc2); 

L'output è:

java.lang.IllegalArgumentException: Invalid BSON field name name 

Qualsiasi idea di come risolvere il problema? Grazie!

risposta

39

Usa:

coll.updateOne(eq("name", "frank"), new Document("$set", new Document("age", 33))); 

per l'aggiornamento del primo documento trovato. Per più aggiornamenti:

coll.updateMany(eq("name", "frank"), new Document("$set", new Document("age", 33))); 

Su questo link, è possibile mettere un quick reference to MongoDB Java 3 Driver

+0

Grazie! Funziona! – user2824073

+4

Che cosa cosa ??? '$ set' è Jiffa !!! Chi ha pensato a questa direttiva implicita/nascosta? Cosa significa in realtà rispetto ad altre direttive implicite/nascoste? –

+1

@ AlikElzin-kilaka, non so cosa significhi "Jiffa" ma sono certo che siamo molto d'accordo sul modo in cui il comando set viene passato al server. Il driver dovrebbe avere impacchettato '$ set',' $ inc' ecc. – Paul

1

Si può provare questo

coll.findOneAndReplace(doc1, doc2); 
11

in MongoDB conducente Java 3.0, quando si aggiorna un documento, è possibile chiamare il metodo coll.replaceOne per sostituire il documento, o chiamare il numero il metodo coll.updateOne/coll.updateMany per aggiornare i documenti utilizzando gli operatori $ set/$ setOnInsert/etc.

nel tuo caso, si può provare:

coll.updateOne(eq("name", "frank"), new Document("$set", new Document("age", 33))); 
coll.replaceOne(eq("name", "frank"), new Document("age", 33)); 
Problemi correlati