Я новичок в Morphia и пытаюсь обновить поле во встроенном документе.Это текущая структура
class A {
List<B> BList;
}
class B {
String field;
}
Итак, моя структура выглядит в MongoDb следующим образом:
{
"_id" : ObjectId("5bab8be0032945f6e9f91d98"),
"className" : "com.abc.A",
"BList" : [
{
"B" : {
"field" : "text"
}
}
}
Теперь я хочу обновить B.field для всех совпадающих запросов.
Я создал следующие UpdateOperations
UpdateOperations updateOps = datastore.createUpdateOperations(A.class);
мой запрос фильтра был в порядке, скажем, фильтр возвращает мне все элементы в A.
updateOps.set("Blist.$[].B.field", "newtext");
когда отладчик достиг этого утверждения, он показывает org.mongodb.morphia.query.ValidationException: Could not resolve path
'BList.$ []. B.field 'против A`
Я даже добавил disableValidation, но он не запускается.
Однако, если я опускаю позиционный оператор, он работает нормально, но при выполнении runnig datastore.update () это не удается.бросая эту ошибку.
Write failed with error code 28 and error message 'Cannot create field B.
Кто-нибудь может подсказать, как сделать это обновление на втором уровне в morphia?