У меня есть пользовательский объект со списком уведомленийоператора позиции MongoDB только первый соответствует обходному
{
"notifications": {
"0": {
"id": "1",
"isRead": false,
"user": {
"id": ObjectId("4f7999c5e4b0f2e6b8490e08"),
"firstName": "X",
"lastName": "Y",
"profilePictureUrl": "URL1"
}
},
"1": {
"id": "2",
"user": {
"id": ObjectId("4f7999c5e4b0f2e6b8490e08"),
"firstName": "X",
"lastName": "Y",
"profilePictureUrl": "URL1"
}
}
},
}
Когда пользователь меняет свой профиль ПИК Я хочу, чтобы обновить все соответствующие уведомления. Я пытаюсь сделать что-то подобное в морфию, но, похоже, обновляет только первую запись.
Query<UserEntity> query = ds.createQuery(UserEntity.class).filter("notifications.user.id",
userProperties.id).field("notifications.user.profilePictureUrl").notEqual(userProperties.profilePictureUrl);
UpdateOperations<UserEntity> op = ds.createUpdateOperations(UserEntity.class).disableValidation()
.set("notifications.$.user.profilePictureUrl", userProperties.profilePictureUrl);
results = update(query, op);
Есть ли обходной путь для этого? Я буду делать это в фоновом задании, поэтому будет более дорогостоящее решение.
Я использую morphia, где команда update приводит к тому, что multi = true. –
Это все еще не работает –