使用 Morphia,是否可以对嵌入在数组中的对象执行 saveOrUpdate / upsert 操作。
考虑以下文件:
{
_id : "abcd",
myArray : [{
"key" : "areaTotal",
"value" : "101.9",
"label" : "Total area (municipality)"
}, {
"key" : "areaUrban",
"value" : "803",
"label" : "Total area (urban)"
}, {
"key" : "populationDensity",
"value" : "15991",
"label" : "Population desnsity"
}
]
}
有没有一种干净的方法可以用另一个对象替换例如带有键“areaUrban”的数组元素,例如
{
"key" : "areaUrban",
"value" : "123",
"label" : "a new label"
}
现在我在两个更新操作中首先删除,然后添加:
UpdateOperations<T> ops = createUpdateOperations().removeAll("myArray ", new BasicDBObject("key", "areaUrban"));
update(createQuery().field("_id").equal(myObjId),ops);
UpdateOperations<T> ops2 = createUpdateOperations().add("myArray ", myReplacementObject);
update(createQuery().field("_id").equal(myObjId),ops2);
哪个工作正常,但我可以只在一个更新操作中做到这一点(使用 morphia 或普通的 mongo java 驱动程序)?
此外,如果数组中最初不存在匹配对象,则应将 myReplacementObject 对象添加到数组中。
谢谢