2017-09-21 1 views
1

This is our document in MongoDBWie aktualisiert man ein Integer-Array-Element in Mongo DB mit Spring Data?

Wir brauchen die Breite koordinieren aktualisieren (address.coord [0]), dessen Wert kleiner als 50. Wie die Abfrage zu erstellen, dies mit Spring Data zu tun. Die folgenden paar Ausschnitte zeigen die Methoden, die wir ausprobiert haben.

Die unten ein tun das Update aber es entfernt coord-0 (Breitengrad) und coord-1 (Längengrad)

Criteria c = where("address.coord").lt(value); 
Update update = new Update().set("address.coord", value); 
WriteResult result = mongodb.updateMulti(query(c), update, "restaurants"); 

Die unter einem could't sogar in der Lage, die Dokumente zu finden, passend zum Kriterien

Criteria c = where("address.$.coord").lt(value); 
Update update = new Update().set("address.$.coord", value); 
WriteResult result = mongodb.updateMulti(query(c), update, "restaurants"); 

Vielen Dank im Voraus für Ihre wertvollen Antworten

+1

'Criteria c = Wo ("address.coord.0") lt (Wert). Aktualisierung update = new Update(). Set ("address.coord.0", Wert); WriteResult Ergebnis = mongodb.updateMulti (Abfrage (c), update, "Restaurants"); ' – chridam

+0

' "Adresse. $. Koord" 'impliziert Adresse ist ein Array, das ist nicht der Fall, daher die Abfrage, die dies verwendet fehlschlägt. – chridam

+0

@Veuram Ich habe das auch versucht, ich habe das gleiche Ergebnis wie in meinem zweiten Code-Snippet bekommen. Es aktualisiert das address.coord [0] aber ich verlor address.cord [1] – Vikki

Antwort

1
Criteria c = where("address.coord.0").lt(value); 
Update update = new Update().set("address.coord.0", value); 
WriteResult result = mongodb.updateMulti(query(c), update, "restaurants"); 

address.coord.0

Verwandte Themen