学习笔记之MongoDB进阶(一)

MongoDB的条件操作符

MongoDB中条件操作符有:

(>) 大于 - $gt
(<) 小于 - $lt
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte

$gt -------- greater than  >
$gte --------- gt equal  >=
$lt -------- less than  <
$lte --------- lt equal  <=
$ne ----------- not equal  !=
$eq  --------  equal
插入数据:
db.col.insert({title: 'MongoDB 进阶', 
    des: 'MongoDB的运算符号',
    by: 'youns',
    url: 'http://www.col.com',
    likes: 100
})
db.col.insert({title: 'MongoDB 进阶', 
    des: 'MongoDB的运算符号',
    by: 'youns',
    url: 'http://www.col.com',
    likes: 200
})
db.col.insert({title: 'MongoDB 进阶', 
    des: 'MongoDB的运算符号',
    by: 'youns',
    url: 'http://www.col.com',
    likes: 300
})
#####大于($gt)使用语法:
db.col.find({"likes" : {$gt : 100}})

使用结果:
{ "_id" : ObjectId("5a387ccde9ba01b2b3d3d946"), "title" : "MongoDB 进阶", "des" : "MongoDB的运算符号", "by" : "youns", "url" : "http://www.col.com", "likes" : 200 }

{ "_id" : ObjectId("5a387cd2e9ba01b2b3d3d947"), "title" : "MongoDB 进阶", "des" : "MongoDB的运算符号", "by" : "youns", "url" : "http://www.col.com", "likes" : 300 }

其他三种用法参考大于的用法
介绍大于和小于联合使用用法
若想获取likes大于100,且小于300的数据,则可以参考以下用法:

db.col.find({likes:{$gt:100,$lt:300}})

使用结果:
{ "_id" : ObjectId("5a387ccde9ba01b2b3d3d946"), "title" : "MongoDB 进阶", "des" : "MongoDB的运算符号", "by" : "youns", "url" : "http://www.col.com", "likes" : 200 }
类型符$type
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 

使用方法:
取title为类型 2String类型的数据
db.col.find({"title" : {$type : 2}})
Limit/Skip/Sort用法

Limit:指定读取几条记录
基础用法:
db.col.find().limit(NUMBER)

Skip:指定忽略多少条数据之后,再显示数据
基础用法:
db.col.find().limit(NUMBER).skip(NUMBER)

用例:
显示一条数据:
> db.col.find().limit(1)
{ "_id" : ObjectId("5a387cc4e9ba01b2b3d3d945"), "title" : "MongoDB 进阶", "des" : "MongoDB的运算符号", "by" : "youns", "url" : "http://www.col.com", "likes" : 100 }

显示一条数据,但要先跳过一条数据
> db.col.find().limit(1).skip(1)
{ "_id" : ObjectId("5a387ccde9ba01b2b3d3d946"), "title" : "MongoDB 进阶", "des" : "MongoDB的运算符号", "by" : "youns", "url" : "http://www.col.com", "likes" : 200 }
是
对比来看俩次的结果,可加深对skip理解:一般来说对于需同时使用limit和skip的情况建议将skip写在前面,如下:
>db.col.find().skip().limit()

而根据官方的Api来看:Skip和limit联合使用,只适合小数据量的查询,当数据量较庞大时不太适合

Sort:用来排序,指定顺序还是倒序
基础语法:

>db.col.find().sort({KEY:1})
key:1,依据key值进行正序输出
key:-1,依据key值进行倒序输出

//倒序显示likes大于23的数据
>db.col.find({likes:{$gt:23}}).sort({"likes":-1})
结果:
{ "_id" : ObjectId("5a387cd2e9ba01b2b3d3d947"), "title" : "MongoDB 进阶", "des" : "MongoDB的运算符号", "by" : "youns", "url" : "http://www.col.com", "likes" : 300 }
{ "_id" : ObjectId("5a387ccde9ba01b2b3d3d946"), "title" : "MongoDB 进阶", "des" : "MongoDB的运算符号", "by" : "youns", "url" : "http://www.col.com", "likes" : 200 }
{ "_id" : ObjectId("5a387cc4e9ba01b2b3d3d945"), "title" : "MongoDB 进阶", "des" : "MongoDB的运算符号", "by" : "youns", "url" : "http://www.col.com", "likes" : 100 }

//在前一基础上,选择所显示的数据,如下:
>db.col.find({likes:{$gt:23}},
{"title":1,likes:1}).sort({"likes":-1})

{ "_id" : ObjectId("5a387cd2e9ba01b2b3d3d947"), "title" : "MongoDB 进阶", "likes" : 300 }
{ "_id" : ObjectId("5a387ccde9ba01b2b3d3d946"), "title" : "MongoDB 进阶", "likes" : 200 }
{ "_id" : ObjectId("5a387cc4e9ba01b2b3d3d945"), "title" : "MongoDB 进阶", "likes" : 100 }

> db.col.find({likes:{$gt:23}},        {"title":1,_id:0}).sort({"likes":-1})

{ "title" : "MongoDB 进阶" }
{ "title" : "MongoDB 进阶" }
{ "title" : "MongoDB 进阶" }
对比结果我们可以看到:_id是默认显示的,而若想让某一字段数据显示可设置为1,不显示为0

以上就是查询和排序的总结,整理以上,我们来写一个相对复杂的语句

//查询集合内数据
>db.col.find()
{ "_id" : ObjectId("5a387cd2e9ba01b2b3d3d947"), "title" : "MongoDB 进阶", "des" : "MongoDB的运算符号", "by" : "youns", "url" : "http://www.col.com", "likes" : 300 }
{ "_id" : ObjectId("5a388562e9ba01b2b3d3d948"), "title" : { "$type" : 2 } }
{ "_id" : ObjectId("5a38a94de9ba01b2b3d3d949"), "title" : "MongoDB 进阶", "des" : "MongoDB的运算符号", "by" : "youns", "url" : "http://www.col.com", "likes" : 100 }
{ "_id" : ObjectId("5a38a960e9ba01b2b3d3d94a"), "title" : "MongoDB 进阶", "des" : "MongoDB的运算符号", "by" : "youns", "url" : "http://www.col.com", "likes" : 50 }
{ "_id" : ObjectId("5a38a98de9ba01b2b3d3d94b"), "title" : "MongoDB 进阶", "des" : "MongoDB的运算符号", "by" : "youns", "url" : "http://www.col.com", "likes" : 99 }
{ "_id" : ObjectId("5a38aac2e9ba01b2b3d3d94c"), "title" : "MongoDB 进阶", "des" : "MongoDB的运算符号", "by" : "youns", "url" : "http://www.col.com", "likes" : 200 }

//查询likes小于300,省略一条数据,显示俩条数据,隐藏_id,显示title和likes
>db.col.find({likes:{$lt:300}},{title:1,_id:0,likes:1}).sort({likes:-1}).skip(1).limit(2)
结果:
{ "title" : "MongoDB 进阶", "likes" : 100 }
{ "title" : "MongoDB 进阶", "likes" : 99 }
以上就是此次的学习记录,只是我以自己的方式进行的一个归纳总结,若有不足望提出,会及时改正。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值