2016-05-17 17 views
0

Ich habe eine Anforderung, dass alle eingebetteten Dokumente mit demselben Attribut aktualisiert werden müssen.MongoDb 3.2: Aktualisieren von Datensätzen

e.g. `Person oneToMany Addresses` 

hier Adressen Dokument eingebettet, und ich möchte eine Abfrage schreiben, das Ergebnis geben wird, dass, wenn für eingebettetes Dokument, i city="New York" meine alle eingebetteten Dokumente schreiben sollten als city="New York" aktualisiert werden.

EDIT:

Ich habe in embeded Dokument Mutter Dokument 'id' gegeben

Unten Methode ist:

public Boolean updateAddressIsolataed(AddressModel addressModel) { 
    final Query query = new Query(); 
    query.addCriteria( 
      Criteria.where("$isolated").is(1).and(PersonEntity.Address) 
      .elemMatch(Criteria.where("parentId").is(addressModel.getParentId()))); 

    System.out.println("query:" + query.toString()); 
    final Update update = new Update(); 
    update.set(PersonEntity.Address + ".$." + "city", addressModel.getCity()); 
    WriteResult wr = mongoTemplate.updateMulti(query, update, PersonEntity); 
    return wr.isUpdateOfExisting(); 

Wenn mehr Erklärung benötigen Sie mich fragen. Vielen Dank im Voraus.

EDIT 2:

Beispieldokument:

{ 
    "_id" : ObjectId("571da15563500213286936bf"), 
    "_class" : "com.sample.entities.PersonEntity", 
    "name" : "Asin", 
    "age" : "22", 
    "address" : [ 
      { 
        "_id" : ObjectId("5735acc5b29cadaf65a7f822"), 
        "parentId" : "571da15563500213286936bf", 
        "city" : "New York", 
        "state" : "QWERTY", 
        "zipcode" : 500 

      }, 
      { 
        "_id" : ObjectId("5735acc5b29cadaf65a7f822"), 
        "parentId" : "571da15563500213286936bf", 
        "city" : "Mumbai", 
        "state" : "Maharashtra", 
        "zipcode" : 500 

      } 
    ] 

}

+1

Haben Sie etwas für sich selbst zuerst versucht zu tun? – aribeiro

+0

ja, ich habe es versucht, aber es gibt mir nur einen Datensatz zu aktualisieren. Ich habe es auch in ihrer Dokumentation aber nicht nichts finden, die diese – Vivek

+0

Bitte passt auf, aktualisieren Sie Ihre Frage mit der Abfrage Sie, um erstellt haben uns Ihre Bemühungen zu zeigen. – aribeiro

Antwort

0

Gemäß der Dokumentation für Positions $ Betreiber sagt, Sie nur das erste Spiel bekommen, und das ist Wie funktionieren die Dinge derzeit?

Es ist bis zum Datum nicht möglich, alle übereinstimmenden Unterdokumente zu aktualisieren.

Für weitere Informationen:

können Sie haben Blick auf JIRA

Verwandte Themen