2013-04-30 78 views
0

是否可以執行查詢,將其限制爲鍵的值?恩。MongoDB按鍵值查詢

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

執行查詢,其中鍵值小於3和大於1

回答

0

我猜你正在尋找$存在查詢。但它不會支持範圍存在。

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 } 

只是供參考:我不認爲這些查詢將使用索引,因此將是非常慢的操作。查看$ exists查詢下面的explain命令。

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" 
} 
0

MongoDb沒有$ between操作符。

您將需要使用$ lt(小於或$ lte - 小於等於)和$ gt(大於或$ gte - 大於等於)來定義您正在查找的範圍。 像這樣的東西應該工作。

{ 
"_id" : {$gt : 1 , $lt : 3} 
}