MongoDBの一部の数値で範囲検索をしようとしています。数値のMongoDB範囲検索が期待どおりに機能しない
私は次の2つのレコードを持っています。インポートフィールドは、最後の2つのvalue
とtype
です。私は値を持っているレコードを返すことができるようにしたい:いくつかの範囲と。
{ "_id" : ObjectId("4eace8570364cc13b7cfa59b"), "sub_id" : -1630181078, "sub_uri" : "http://datetest.com/datetest", "pro_id" : -1630181078, "pro_uri" : "http://datetest.com/datetest", "type" : "number", "value" : "8969.0" }
{ "_id" : ObjectId("4eacef7303642d3d1adcbdaf"), "sub_id" : -1630181078, "sub_uri" : "http://datetest.com/datetest", "pro_id" : -1630181078, "pro_uri" : "http://datetest.com/datetest", "type" : "number", "value" : "3423.0" }
私はこのクエリ
> db.triples.find({"value":{$gte: 908}});
を行うとだから私はこのクエリを実行します。
> db.triples.find({"value":{$gte: "908"}});
そして再びどちらも2つの予想のレコードが(この場合は他のいくつかのが、返されます日付を含むレコードが返されます)。
上記の2つのレコードを取得する予定ですが、どちらも表示されません。
数値の前後に引用符があることがわかります。つまり、「文字列」として保存されているため、数値検索が機能しません。私は非常に明示的にDouble
としてそれらを保存しているので、 ".0"が表示されています。
find(... query ...)コマンドが期待どおりに機能しないという別の理由がありますか? 。
EDIT:
挿入コードは、この(例外処理を削除)のようになります。
t.getObject()のgetValue()は文字列を返す - これが正常に動作しています。私はこれを使ってMongoDBに保存されることを期待していたDoubleをインスタンス化し、数値範囲の検索を許可します。
triple.put("value",new Double(t.getObject().getValue()));
DBCollection triples;
triples = db.getCollection("triples");
triples.update(triple,triple,true,false);
Javaドライバを使用すると、挿入コードが投稿されます。うまくいけばそれが役に立ちます。 – Ankur