mongoDB issue(or not) when using $lte and $gte with the same value the query doesn't return any value
28,810
Problem is you inserted data into test collection but perform query on listings collection. If you query test collection everything works as expected:
> db.test.insert( { a: 0.1, b: 1, c : 0.01 } )
> db.test.insert( { a: 0.2, b: 2, c : 0.02 } )
> db.test.insert( { a: 0.3, b: 3, c : 0.03 } )
> db.test.count({a: { $gte: 0.2, $lte: 0.2 } } )
1
> db.test.find({a: { $gte: 0.2, $lte: 0.2 } } );
{ "_id" : ObjectId("5225ecd155feffaf74591328"), "a" : 0.2, "b" : 2, "c" : 0.02 }
![Admin](/assets/logo_square_200-5d0d61d6853298bd2a4fe063103715b4daf2819fc21225efa21dfb93e61952ea.png)
Author by
Admin
Updated on July 09, 2022Comments
-
Admin almost 2 years
Let me give you an example:
mongos> db.test.insert( { a: 0.1, b: 1, c : 0.01 } ) mongos> db.test.insert( { a: 0.2, b: 2, c : 0.02 } ) mongos> db.test.insert( { a: 0.3, b: 3, c : 0.03 } ) mongos> db.test.find() { "_id" : ObjectId("5225e072dd144e45bf406d42"), "a" : 0.1, "b" : 1, "c" : 0.01 } { "_id" : ObjectId("5225e07add144e45bf406d43"), "a" : 0.2, "b" : 2, "c" : 0.02 } { "_id" : ObjectId("5225e082dd144e45bf406d44"), "a" : 0.3, "b" : 3, "c" : 0.03 } mongos> db.listings.find({a: { $gte: 0.2, $lte: 0.2 } } ); mongos> db.listings.count({a: { $gte: 0.2, $lte: 0.2 } } ); 0
As you can see, even if the document exists in the collection, the query doesn't return any result. I know that this is wierd to use range search for a simple equal, but in my opinion this should work and return the expected document. Thank you for your answer.
Forgot to mention the mongoDB verison is 2.4.4-pre-.