如何使用java在mongodb中更新文档中的特定值
我想做的很简单,但我不知道为什么它不起作用。我试图做的是在_id上查询数据库,如果匹配,则更新找到的文档中的特定记录如何使用java在mongodb中更新文档中的特定值,java,mongodb,Java,Mongodb,我想做的很简单,但我不知道为什么它不起作用。我试图做的是在_id上查询数据库,如果匹配,则更新找到的文档中的特定记录 BasicDBObject basic = new BasicDBObject(); basic.put("_id", id); FindIterable<Document> cursor = collection.find(basic); if(cursor == null){ Document tableEntry = ne
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");
}
}
运行此操作并检查数据库后,它似乎没有更新。我目前在数据库中有一个文档,它不会更新它。我使用的是mongo java 3.4.2驱动程序 您正在使用insertOne,它将插入一个新文档。您需要使用更新现有文档的命令,例如findOneAndUpdate
如果使用findOneAndUpdate之类的命令,请注意它需要两个参数。第一个是唯一标识要更新的文档的查询。第二个是告诉如何更新文档的对象
例如,在第二个参数中,您可能希望传递如下内容:
BasicDBObject updatedDocument = new BasicDBObject();
updatedDocument.append("$set", new BasicDBObject().append("longitude", longitude));
Mongo为更新提供以下API调用:
findOneAndUpdate-
更新-
更新日期-
更新名称-
另请参阅我已经尝试过了,现在它更新了。但是,如果没有添加初始记录,该怎么办。。如果findOneAndUpdate无法根据该方法第一个参数中的约束进行查找,它会创建该记录吗?我认为在这种情况下,您需要编写一些逻辑,本质上说:如果数据库中存在该记录,请更新它;否则,创建一个新记录并插入它