0

我正在使用 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);      
    }
4

1 回答 1

0

解决了它与更新/查询不同的路线:

mongoTemplate.getDb().getCollection(COLLECTION_NAME).update(new 
BasicDBObject("key",event.getKey()), new BasicDBObject ("$set", userDBObject), false, false); 
于 2014-06-26T11:37:16.997 回答