储蓄及;使用Spring数据MongoTemplate更新完整的json文档
我正在使用SpringDataMongoTemplate来管理mongo操作。我正在尝试保存和更新json完整文档(在java中使用String.class) 例如:储蓄及;使用Spring数据MongoTemplate更新完整的json文档,spring,mongodb,spring-data,mongotemplate,Spring,Mongodb,Spring Data,Mongotemplate,我正在使用SpringDataMongoTemplate来管理mongo操作。我正在尝试保存和更新json完整文档(在java中使用String.class) 例如: String content = "{MyId": "1","code":"UG","variables":[1,2,3,4,5]}"; String updatedContent = "{MyId": "1","code":"XX","variables":[6,7,8,9,10]}"; 我知道我可以使用以下工具独立更新代码和
String content = "{MyId": "1","code":"UG","variables":[1,2,3,4,5]}";
String updatedContent = "{MyId": "1","code":"XX","variables":[6,7,8,9,10]}";
我知道我可以使用以下工具独立更新代码和变量:
Query query = new Query(where("MyId").is("1"));
Update update1 = new Update().set("code", "XX");
getMongoTemplate().upsert(query, update1, collectionId);
Update update2 = new Update().set("variables", "[6,7,8,9,10]");
getMongoTemplate().upsert(query, update2, collectionId);
但是由于我们的应用程序体系结构,直接替换完整对象可能更有用。据我所知:
getMongoTemplate().save(content,collectionId)
getMongoTemplate().save(updatedContent,collectionId)
实现saveOrUpdate功能,但这会创建两个对象,不更新任何内容
我错过了什么?有办法吗?谢谢您可以使用以下代码:
Query query = new Query();
query.addCriteria(Criteria.where("MyId").is("1"));
Update update = new Update();
Iterator<String> iterator = json.keys();
while(iterator.hasNext()) {
String key = iterator.next();
if(!key.equals("MyId")) {
Object value = json.get(key);
update.set(key, value);
}
}
mongoTemplate.updateFirst(query, update, entityClass);
Query Query=new Query();
query.addCriteria(Criteria.where(“MyId”)为(“1”);
更新=新更新();
迭代器迭代器=json.keys();
while(iterator.hasNext()){
String key=iterator.next();
如果(!key.equals(“MyId”)){
Object value=json.get(key);
update.set(键、值);
}
}
updateFirst(查询、更新、entityClass);
可能还有其他方法可以从json获取键集
,您可以根据自己的方便使用
您可以使用BasicDbObject
获取键集
您可以使用
mongoTemplate.getConverter()
获取BasicDbObject
,请您详细解释一下json.keys()方法是什么?json.keys()
将为您提供类的文件。