【发布时间】:2012-04-07 12:03:07
【问题描述】:
我有 JSON 之类的:
{“_id”:“1”,“_class”:“com.model.Test”,“itemList”:[ {“itemID”:“1”,“itemName”:“Foo”, “资源”:[{“resourceID”:“1”,“resourceName”:“Foo Test1”,},{“resourceID”:“2”,“resourceName”:“Foo 测试2", } ] } ] }
我需要能够更新资源列表。 我做了以下事情:
BasicDBObject updateQuery = new BasicDBObject();
updateQuery.put("id", "1");
BasicDBObject updateCommand = new BasicDBObject();
List<Resource> resources = populateResources();//Fetch a new list of Resources
updateCommand.put("$push", new BasicDBObject("resources", resources));
MongoOperations mongoOperations = mongoConfiguration.getMongoTemplate();
DBCollection db = mongoOperations.getCollection("myCollection");
db.save(updateCommand);
我得到以下错误:
java.lang.IllegalArgumentException:存储在数据库中的字段不能 以“$”开头(坏键:“$push”)
当我使用时:
db.update( updateQuery, updateCommand, true, true );
我遇到了以下异常:
java.lang.IllegalArgumentException:无法序列化类 com.model.Test
我试过了: db.updateMulti(updateQuery, updateCommand); 我没有收到任何异常,也没有对文档进行任何更新。
那我错过了什么!!
【问题讨论】: