0
我想要做的事情非常简单,但我不确定它为什么不起作用。我想要做的是在_id上查询数据库,如果它匹配,然后更新它找到的文档中的特定记录。如何使用java更新mongodb中文档中的特定值
BasicDBObject basic = new BasicDBObject();
basic.put("_id", id);
FindIterable<Document> cursor = collection.find(basic);
if(cursor == null){
Document tableEntry = new Document();
tableEntry.put("_id", id);
tableEntry.put("longitude", longitude);
tableEntry.put("latitude", latitude);
tableEntry.put("status", status);
collection.insertOne(tableEntry);
closeConnection();
}else{
for(Document doc : cursor){
doc.put("status", "full");
}
}
运行这个并检查数据库后,它似乎没有更新。我目前在数据库中有1个文档,它不会更新它。我正在使用mongo java 3.4.2驱动程序。
我已经试过了,现在它更新。但是,如果最初的记录没有被添加,会怎样呢?如果findOneAndUpdate无法根据该方法的第一个参数中的约束找到它,那么它会创建该记录吗? – dfqupwndguerrillamailde
我认为在这种情况下,您需要编写一些基本上说的逻辑:“如果此记录存在于数据库中,请更新它;否则,创建一个新记录并将其插入” –