Я пытаюсь выполнить поиск диапазона по некоторым числам в MongoDB.
У меня есть следующие две записи. Поля импорта - это последние два поля, 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"}});
И снова ни одна из двух ожидаемых записей не возвращается (хотя в этом случае возвращается другая запись, содержащая дату).
Я ожидаю получить две записи выше, но ни одна из них не отображается.
Я вижу, что вокруг чисел есть кавычки - означает ли это, что они хранятся как «строки», и поэтому числовой поиск не работает? Я очень явно сохранил их как Double
, следовательно, ".0", который появляется.
Или может быть какая-то другая причина, по которой команда find (... query ...) не работает должным образом?
EDIT:
Код вставки выглядит следующим образом (исключена обработка исключений):
t.getObject (). GetValue () возвращает строку - это работает нормально. Затем я использую это для создания экземпляра Double, который, как я надеялся, будет сохранен в MongoDB, и разрешит поиск по числовому диапазону.
triple.put("value",new Double(t.getObject().getValue()));
DBCollection triples;
triples = db.getCollection("triples");
triples.update(triple,triple,true,false);