是否可以执行将约束限制为键值的查询?离。
"1":{
...
}
"2":{
...
}
"3":{
...
}
执行密钥值小于3且大于1的查询。
答案 0 :(得分:0)
我猜你正在寻找$ exists查询。但它不会支持范围的存在。
db.testing.find()
{ "_id" : ObjectId("51380b1838fa3b768b5aa6b6"), "a" : 1 }
{ "_id" : 1, "x" : [ 1, 2, 3 ] }
{ "_id" : "id1", "a" : 1, "b" : "abhishek", "c" : true }
db.testing.find({_id : { $exists : 1}, a : {$exists : 1} })
{ "_id" : ObjectId("51380b1838fa3b768b5aa6b6"), "a" : 1 }
{ "_id" : "id1", "a" : 1, "b" : "abhishek", "c" : true }
仅供参考:我不认为这些查询会使用索引,因此操作会很慢。查看下面的explain命令,了解$ exists query。
db.testing.find({_id : { $exists : 1}}).explain()
{
"cursor" : "BasicCursor",
"isMultiKey" : false,
"n" : 3,
"nscannedObjects" : 3,
"nscanned" : 3,
"nscannedObjectsAllPlans" : 3,
"nscannedAllPlans" : 3,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 0,
"indexBounds" : {
},
"server" : "bdvlpabhishekk:27016"
}
答案 1 :(得分:0)
MongoDb没有$ between运算符。
您需要使用$ lt(小于,或$ lte - 小于等于)和$ gt(大于或$ gte - 大于等于)来定义您要查找的范围。 这样的事情应该有效。
{
"_id" : {$gt : 1 , $lt : 3}
}