我使用Jackson将随机XML字段映射到MongoDB(效果很好)。课程是:
@JacksonXmlRootElement(localName = "event")
public class NextEvent {
@Id
public String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@JacksonXmlProperty(localName="key")
public String key;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
private Map<String, String> event = new TreeMap<String, String>();
@JsonAnyGetter
public Map<String, String> get() {
return event;
}
@JsonAnySetter
public void set(String name, String value) {
event.put(name, value);
}
}
我的问题是如何基于关键字段使用MongoTemplate.updateFirst()来创建一种更新文档的创造性方法。我不想改变身份证,但我想更新任何其他字段。这些字段是随机的(因此使用Map作为getter和setter);因此,单独更新字段不是一种选择。
我已经玩过下面的方法,但无济于事;有什么想法吗?提前感谢您的帮助。
public void updateNextEvent2(NextEvent event) {
DBObject userDBObject = (DBObject) mongoTemplate.getConverter().convertToMongoType(event);
BasicQuery query = new BasicQuery("{ 'key' : '" + event.getKey() + "' }");
Update setUpdate = Update.fromDBObject(new BasicDBObject("$set", userDBObject));
mongoTemplate.updateFirst(query, setUpdate, NextEvent.class);
}
答案 0 :(得分:0)
解决了与更新/查询不同的路线:
mongoTemplate.getDb().getCollection(COLLECTION_NAME).update(new
BasicDBObject("key",event.getKey()), new BasicDBObject ("$set", userDBObject), false, false);