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为类型 2 的String类型的数据
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 }