11.文档查询
1.查询
(1)方法
(2)语法
Db.collection.find(query,projection)
Query:可选,使用查询操作符指定查询条件
Projection:可选,使用投影操作符指定返回的键。查询时返回文档中所有键值,只需省略该参数即可(默认省略)
Db.collName.find(query,{ title:1 , by :1})//inclusion模式,指定返回的键,不返回其他键
Db.collName.find(query , { title:0 , by: 0 });//exclusion模式,指定不返回的键,返回其他键
2. 查询条件
(1)常规条件
操作 |
格式 |
范例 |
等于 |
{ |
db.collName.find({"by":"钢铁侠"}); |
小于 |
{ |
db.collName.find({"likes":{$lt:50}}); |
小于或等于 |
{ |
db.collName.find({"likes":{$lte:50}} |
大于 |
{ |
db.collName.find({"likes":{$gt:50}}); |
大于或等于 |
{ |
db.collName.find({"likes":{$gte:50}} |
不等于 |
{ |
db.collName.find({"likes":{$ne:50}} |
存在于 |
{key:{$in:[1,2,3,5]}} |
db.collName.find({'likes':{$in:[10,23]} |
正则匹配查询:
Db.collName.find({name:/A/})// 查询name中带A的数据
Db.collName.find({name:/^A/}) //查询name中以开头的数据
$in:
Db.collName.find( { class : {$in : [ ‘ PHP ’ , ’ NET ’ ] } } );
(2)AND条件
传入多个键(key),每个键(key)以逗号隔开
Db.collName.find({key1:value1,key2:value2});
(3)OR条件
Db.collName.find({
$or:[
{$key1:value1},{$key2:value2}
]
})
(4)AND和OR联合使用
//查询likes值大于50并且(name值是‘史塔克’或title值是‘钢铁侠’)
Db.collName.find( {“likes”:{$gt:50} , $or: [{“name”:”史塔克”} , {“title”:”钢铁侠”}]} )
//team为复仇者并且 年龄在小于50或大于100
Db.users.find({team:’’复仇者},$or:[{age:{$lt:50},{age:{$gt:100}}}]);
//年龄在50-100之间(大于50并且小于100)
Db.users.find({age:{$gte:50,$lte:100}});
//年龄在50-100之间(小于100 大于50)
Db.users.find({age:{$gte:50,$lte:100}});
3. 读取指定数量limit
(1)方法
Db.collName.find().limit()
Db.collName.find.skip()
Db.collName.find.skit.limit()
(2)示例
//前两条数据
Db.collName.find({}).limit(2)
//跳过前两条,剩下的数据
Db.collName.find().skip(0)
//从第三条数据开始,取5条
Db.collName.find().skip(2).limit(5)
4. 排序
使用sort()方法对数据进行拍戏,sort()方法可以通过参数指定排序的字段,并使用1和-1来指定排序的方式,其中1为升序排列,-1是用于降序排列
Db.collName.find().sort({key:1})
//按照年龄排序