我正在使用 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() 更新文档。我不想更改 id,但我想更新任何其他字段。这些字段是随机的(因此使用 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);
}