2016-05-30 19 views
0

我在DB中擁有一個集合,並且可以很好地將其獲取到DBCollection。 但是,當我嘗試使用字符串字段查詢它時,它不返回任何結果。Java MongoDB無法使用集合中的字符串條件進行查詢

但是,當我使用Integer字段進行查詢時,該查詢返回同一數據集的結果。

這裏是我的考驗:

// It doesn't work this way, cursor has nothing 
DBObject allQuery = new BasicDBObject(); 
allQuery.put("data", "someName"); 
List cursor = collection.find(allQuery).toArray(); 


// This time it works, only change is that I query with an Integer value now 
DBObject allQuery = new BasicDBObject(); 
allQuery.put("xyz", 1); 
List cursor = collection.find(allQuery).toArray(); 

這是從數據庫返回的集合:

{ "_id" : { "$oid" : "574c780aa8268280d1b53162"} , "id" : 1 , "name" : "\"Some name\"" , "city" : "\"Ankara\"" , "country" : "\"Turkey\""} 

我懷疑那些字符串表示用「\」字符,但找不到任何解決方法,它無論是。

我已經檢查了幾十篇文章和MongoDB文檔,但似乎沒有什麼特別的。但有趣的是它不起作用。

希望你能告訴我一個方法來解決這個問題。 謝謝。

回答

2

您的字符串值用引號引起來。如果你不能夠改變,你可以在查詢中包括引號:

allQuery.put("iata", "\"BOS\""); 
+0

當我插入,我只是簡單地推列表到DB,爲什麼這些報價存在? – neocorp

+0

@NiyaziErdogan這些對象是如何生成的? – shmosel

+0

我從CSV文件中讀取它們並將其添加到列表中,而無需進行任何修改。 – neocorp

相關問題