MongoDB按键的值查询

时间:2013-04-30 16:21:26

标签: mongodb database nosql

是否可以执行将约束限制为键值的查询?离。

"1":{
     ...
    }
"2":{
     ...
    }
"3":{
     ...
    }

执行密钥值小于3且大于1的查询。

2 个答案:

答案 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}
}