MongoDB學習筆記(3):查詢文檔

MongoDB查詢數據的語法格式如下:

db.COLLECTION_NAME.find()

find() 方法以非結構化的方式來顯示所有文檔。如果需要以格式化的方式來顯示文檔 ,可以使用 pretty() 方法,語法格式如下:

db.col.find().pretty()

除find() 方法之外,還有一個findOne() 方法,它只返回一個文檔,以格式化的方式顯式。

MongoDB AND條件

MongoDB的find()方法可以傳入多個鍵(key),每個鍵(key)以逗號隔開,相當於常規SQL的AND條件。
語法格式如下:

db.col.find({key1:value1, key2:value2}).pretty()

MongoDB OR 條件

MongoDB OR 條件語句使用了關鍵字 $or,語法格式如下:

db.col.find(
   {
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
)

AND和OR聯合使用

以下實例演示了AND和OR聯合使用,類似常規SQL語句: ‘where price>50 AND (author = ‘Eric’ OR title = ‘MongoDB’)’

db.col.find({
    "price": {
        $gt: 50
    },
    $or: [
        {
            "author": "Eric"
        },
        {
            "title": "MongoDB"
        }
    ]
})

條件操作符

MongoDB中可用的條件操作符有:

  • $gt - (>) 大於
  • $lt - (<) 小於
  • $gte - (>=) 大於等於
  • $lte - (<= ) 小於等於
  • $type - 數據類型

MongoDB與RDBMS Where語句比較

操作 格式 範例 RDBMS中的類似語句
等於 {<key>:<value>} db.col.find({“by”:”Tom”}) where by = ‘Tom’
小於 {<key>:{$lt:<value>}} db.col.find({“likes”:{$lt:50}}) where likes < 50
小於或等於 {<key>:{$lte:<value>}} db.col.find({“likes”:{$lte:50}}) where likes <= 50
大於 {<key>:{$gt:<value>}} db.col.find({“likes”:{$gt:50}}) where likes > 50
大於或等於 {<key>:{$gte:<value>}} db.col.find({“likes”:{$gte:50}}) where likes >= 50
不等於 {<key>:{$ne:<value>}} db.col.find({“likes”:{$ne:50}}) where likes != 50

示例,如果你想獲取”col”集合中 “price” 大於100,小於 200 的數據,可以使用以下命令:
db.col.find({price : {$lt :200, $gt : 100}})
類似於SQL語句:
select * from col where likes>100 AND likes<200;

$type操作符
$type操作符是基於BSON類型來檢索集合中匹配的數據類型,並返回結果。MongoDB 中可以使用的類型如下表所示:

類型 數字 備註
Double 1
String 2
Object 3
Array 4
Binary data 5
Undefined 6 已廢棄。
Object id 7
Boolean 8
Date 9
Null 10
Regular Expression 11
JavaScript 13
Symbol 14
JavaScript (with scope) 15
32-bit integer 16
Timestamp 17
64-bit integer 18
Min key 255 Query with -1
Max key 127

如果想獲取 “col” 集合中 title 爲 String 的數據,可以使用以下命令:

db.col.find({“title” : {$type : 2}})

limit()方法

如果需要在MongoDB中讀取指定數量的數據記錄,可以使用limit()方法。limit()方法接受一個數字參數,該參數指定從MongoDB中讀取的記錄條數。 limit()方法語法格式如下:

db.COLLECTION_NAME.find().limit(NUMBER)

skip()方法

在MongoDB中使用skip()方法來跳過指定數量的數據,skip方法同樣接受一個數字參數作爲跳過的記錄條數。 skip()方法語法格式如下:

db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

以下實例只會顯示第二條文檔數據:

db.col.find({},{“title”:1,_id:0}).limit(1).skip(1)

注: skip()方法默認參數爲 0 。

sort()方法

在MongoDB中使用sort()方法對數據進行排序,sort()方法可以通過參數指定排序的字段,並使用 1 和 -1 來指定排序的方式,其中 1 爲升序排列,而-1是用於降序排列。 sort()方法基本語法如下所示:

db.COLLECTION_NAME.find().sort({KEY:1})

注:
如果沒有指定sort()方法的排序方式,默認按照文檔的升序排列。
可使用sort()方法、limit()方法和skip()方法實現分頁查詢。

發佈了130 篇原創文章 · 獲贊 127 · 訪問量 115萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章