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
我認爲在這種情況下,您需要編寫一些基本上說的邏輯:「如果此記錄存在於數據庫中,請更新它;否則,創建一個新記錄並將其插入」 –