1
目前我正在學習處理Java中的MongoDB。我創建了集「自留地」,並插入一個文件:MongoDB:簡單的查詢問題
final Document plotObj = new Document();
plotObj.put(DataKey.PLOT_UUID.getKey(), plot.getUniqueId());
plotObj.put(DataKey.REGION_ID.getKey(), plot.getRegionId());
plotObj.put(DataKey.REGION_WORLD.getKey(), plot.getRegionWorld());
plotObj.put(DataKey.REGION_OWNER.getKey(), plot.getPlotOwner().isPresent() ? plot.getPlotOwner() : null);
plotObj.put(DataKey.PLOT_TRUSTED.getKey(), new BasicDBList().addAll(plot.getTrusted()));
this.collection.insertOne(plotObj);
「DataKey.PLOT_UUID.getKey()」表示一個字符串。 「plot.getUniqueId()」表示一個java.util.UUID。將這個文件後,我想查詢它:
public boolean hasPlot(UUID plotId){
final BasicDBObject query = new BasicDBObject(DataKey.PLOT_UUID.getKey(), new BasicDBObject("$eq", plotId));
return this.collection.find(query).iterator().hasNext();
}
但是這個方法總是返回儘管文件被成功地插入假事件。
也許這個問題可以很容易地解決但不過:提前致謝! :)
這是可能的MongoDB的「近實時」行爲的效果?我已閱讀了它,但無法再找到鏈接。在mongodb中,有可能mongodb-query沒有找到剛插入的對象。也許你可以設置一個計時器並測試你的查詢有點延遲? – nabinca
即使重新啓動應用程序,它也會返回false。我需要這種方法來確保我是否必須插入或更新文檔。 – leNic
因此,似乎只剩下兩個明顯的選項:您傳遞給方法的plotId不是您保存在數據庫中的plotId?或者:你的圖書館不處理uuid的正確方法? – nabinca