2016-05-30 7 views
0

DBにコレクションがあり、それをDBCollectionに取得できます。 しかし、文字列フィールドでクエリを実行しようとすると、結果は返されません。Java MongoDBは、コレクションの文字列条件でクエリできません。

ただし、私が整数フィールドでクエリを実行すると、そのクエリは同じデータセットの結果を返します。

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

は、私が「\」の文字と、それらの文字列表現を疑うが、それへの回避策を見つけることができませんでした:

// 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(); 

これは、DBから返されるコレクションは、次のとおりです。ここで

は私の試練ですどちらか。

私は何十件もの記事とMongoDBのドキュメントをチェックしましたが、これについて特別なことは何もないようです。しかし興味深いことに、それは動作しません。

あなたは私にこれを回避する方法を示すことができます。 ありがとうございます。

答えて

2

文字列の値は引用符で囲みます。あなたはそれを変更することはできません場合は、あなたがあなたのクエリ内の引用符含めることができます。私は挿入したとき、私はただ単にDBにリスト をプッシュした

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

を、なぜこれらの引用符が存在するのですか? – neocorp

+0

@ NiyaziErdoganこれらのオブジェクトはどのように生成されますか? – shmosel

+0

私はCSVファイルからそれらを読み、一度変更することなくリストに追加します。 – neocorp

関連する問題