2014-12-27 4 views
0

У меня есть запрос sql, который я хочу преобразовать в MongoDB и все еще использовать индекс. Вот в запросе SQLКак использовать запрос MongoDB и использовать индекс

SELECT * FROM "Data1" WHERE age > Cast('12' as int) 

В соответствии с этим SO ответ на приведенный выше запрос может быть преобразован в:

db.test.find("this.age > 12") 

Однако, используя этот синтаксис не будет использовать никаких индексов. Я хотел знать, что эта проблема исправлена ​​для MonoDB.

+0

это должно работать: db.test.find ({age: {$ gt: '12'}}) – Disposer

ответ

1

Вам необходимо использовать оператор $gt, чтобы использовать индексы.

db.test.find({age:{$gt:12}}) 

Поле age должны быть проиндексированы.

Я хотел знать, была ли эта проблема исправлена ​​для MongoDB.

Этого еще не может быть достигнуто.

В документе говорится: если вам нужно использовать скрипт java для оценки и выбора документов, вам необходимо использовать оператор $where. Но он не будет использовать индекс.

db.test.find({ $where: "this.age>12" }); 

Из документов,

$, где оценивает JavaScript и не могут воспользоваться преимуществами индексов;

Следовательно, всякий раз, когда критерии запроса оцениваются как скрипт Java, он никогда не сможет использовать индексы.

+0

как это сделать: count = 12; db.test.find ({age: {$ gt: count}}) –

Смежные вопросы