我是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");
当调试器到达此语句时,它针对A`显示org.mongodb.morphia.query.ValidationException: Could not resolve path
'BList。$ []。B.field'
我什至添加了disableValidation,但这无法运行。
但是,如果我省略位置运算符,它可以正常工作,但是在runnig datastore.update()上运行时它将失败。 抛出此错误。
Write failed with error code 28 and error message 'Cannot create field B.
有人可以建议在吗啡的第二级进行此更新吗?