Поиск диапазона MongoDB по номерам не работает должным образом - PullRequest
1 голос
/ 30 октября 2011

Я пытаюсь выполнить поиск диапазона по некоторым числам в 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); 

1 Ответ

1 голос
/ 30 октября 2011

Вы правы - они сохраняются как строки, и $ gte предположительно будет использовать лексикографический порядок.Какой драйвер mongoDB вы используете?Как именно вы вставляете эти записи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...