KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a query below. I want get items between 4 and 6 so only a:1 should match because it has the value 5 in b. > db.test.find({ b : { $gt : 4 }, b: {$lt : 6}}); { "_id" : ObjectId("4d54cff54364000000004331"), "a" : 1, "b" : [ 2, 3, 4, 5 ] } { "_id" : ObjectId("4d54d0074364000000004332"), "a" : 2, "b" : [ 2, 4, 6, 8 ] } > Can someone tell be why a:2 is matching this query? I can't really see why it is being returned. I also tried what was specified in the tutorial but id did not seem to work: > db.test.find({ b : { $gt : 4, $lt : 6}}); { "_id" : ObjectId("4d54cff54364000000004331"), "a" : 1, "b" : [ 2, 3, 4, 5 ] } { "_id" : ObjectId("4d54d0074364000000004332"), "a" : 2, "b" : [ 2, 4, 6, 8 ] } > And this one to avoid any confusion regarding GT/GTE > db.test.find({b: {$gt: 4.5, $lt: 5.5}}); { "_id" : ObjectId("4d54cff54364000000004331"), "a" : 1, "b" : [ 2, 3, 4, 5 ] } { "_id" : ObjectId("4d54d0074364000000004332"), "a" : 2, "b" : [ 2, 4, 6, 8 ] } > only a:1 should be returned. As suggested, I gave $elemMatch a try but it did not appear to work either (objectIds are different because I am on a different machine) > db.test.find(); { "_id" : ObjectId("4d5a24a5e82e00000000433f"), "a" : 1, "b" : [ 2, 3, 4, 5 ] } { "_id" : ObjectId("4d5a24bbe82e000000004340"), "a" : 2, "b" : [ 2, 4, 6, 8 ] } > db.test.find({b: {$elemMatch: {$gt : 4, $lt: 6 }}}); > No documents were returned.
Tags (comma-separated)
Save Edits
Cancel