Luke101
Luke101

Reputation: 65278

How to cast a MongoDB query and use Index

I have a sql query that I want to convert to MongoDB and still use the index. Here is the sql query

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

According to this SO answer the above query can be converted to:

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

However, using this syntax will not use any indexes. I wanted to know has this issue has been fixed for MonoDB.

Upvotes: 0

Views: 348

Answers (1)

BatScream
BatScream

Reputation: 19700

You need to use the $gt operator, to make use of indexes.

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

The field age should be indexed.

I wanted to know has this issue has been fixed for MongoDB.

It still can't be achieved.

The doc says, If you need to use java script for evaluation and select documents, you need to use the $where operator. But it would not use the index.

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

From the docs,

$where evaluates JavaScript and cannot take advantage of indexes;

Hence whenever query criteria is evaluated as Java script , it can never make use of indexes.

Upvotes: 1

Related Questions