2016-05-17 23 views
0

すべての埋め込み文書を同じ属性で更新する必要があるという要件があります。MongoDb 3.2:レコードの更新

e.g. `Person oneToMany Addresses` 

ここにアドレスが埋め込まれた文書であり、私があれば、埋め込まれた文書のために、私はcity="New York"私のすべての埋め込みドキュメントを書くcity="New York"ように更新されるべきであるとの結果が得られますクエリを書きたいです。私に聞いてください任意のより詳細な説明が必要な場合は

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(); 

EDIT:

私は以下

埋め込まドキュメントで親ドキュメント 'ID' を与えているメソッドです。 ありがとうございます。

EDIT 2:

サンプル文書:位置$演算子のドキュメントによると

{ 
    "_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

で見ることができ、あなたは最初に自分のために何かをやってみましたか? – aribeiro

+0

はい、私は試しましたが、アップデートするレコードは1つだけです。私は彼らの文書でも確認しましたが、これに一致するものは何も見つかりませんでした。 – Vivek

+0

あなたの努力を示すためにあなたが作成した質問で質問を更新してください。 – aribeiro

答えて

0

は、あなただけの最初の試合を取得し、言う、これはあります現在どのように物事は設計によって動作します。

対応するすべてのサブ文書を更新するまでには、日付まではできません。詳細情報については

あなたはJIRA

関連する問題