У меня есть требование о необходимости обновления всех встроенных документов с тем же атрибутом.MongoDb 3.2: Обновление записей
e.g. `Person oneToMany Addresses`
здесь Адрес вложен документ, и я хочу, чтобы написать запрос, который даст результат, если для встроенного документа, я пишу city="New York"
мои все встроенные документы должны быть обновлены, как city="New York"
.
EDIT:
Я дал родительский документ 'идентификатор' в документе поместить его
Ниже метод:
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 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
}
]
}
Вы пробовали делать что-то для себя в первую очередь? – aribeiro
Да, я пробовал, но он дает мне только одну запись для обновления. Я также проверил его в своей документации, но не нашел ничего, что будет соответствовать этому – Vivek
. Пожалуйста, обновите свой вопрос с запросом, который вы создали, чтобы показать нам свои усилия. – aribeiro