Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
储蓄及;使用Spring数据MongoTemplate更新完整的json文档_Spring_Mongodb_Spring Data_Mongotemplate - Fatal编程技术网

储蓄及;使用Spring数据MongoTemplate更新完整的json文档

储蓄及;使用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]}"; 我知道我可以使用以下工具独立更新代码和

我正在使用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]}";
我知道我可以使用以下工具独立更新代码和变量:

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()
将为您提供类的文件。