2015-09-23 74 views
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(); 
} 

但是這個方法總是返回儘管文件被成功地插入假事件。

也許這個問題可以很容易地解決但不過:提前致謝! :)

+0

這是可能的MongoDB的「近實時」行爲的效果?我已閱讀了它,但無法再找到鏈接。在mongodb中,有可能mongodb-query沒有找到剛插入的對象。也許你可以設置一個計時器並測試你的查詢有點延遲? – nabinca

+0

即使重新啓動應用程序,它也會返回false。我需要這種方法來確保我是否必須插入或更新文檔。 – leNic

+0

因此,似乎只剩下兩個明顯的選項:您傳遞給方法的plotId不是您保存在數據庫中的plotId?或者:你的圖書館不處理uuid的正確方法? – nabinca

回答

0

根據您不需要$ EQ 文檔只寫

new BasicDBObject(DataKey.PLOT_UUID.getKey(), plotId)); 
+0

它仍然返回false: http://puu.sh/klFO1/ee714b4fe3.png – leNic