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 中可以使用的类型如下表所示:

类型数字备注
Double1
String2
Object3
Array4
Binary data5
Undefined6已废弃。
Object id7
Boolean8
Date9
Null10
Regular Expression11
JavaScript13
Symbol14
JavaScript (with scope)15
32-bit integer16
Timestamp17
64-bit integer18
Min key255Query with -1
Max key127

如果想获取 “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()方法实现分页查询。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值