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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章