查找操作
db.collectionName.find() -------->select * from tableName
find(query,field)
功能:查找所有符合条件的文档
参数:query:筛选条件 相当于where字句
field:展示的域 相当于select的展示部分
返回:返回所有查找到的内容
field参数:选择要展示的域 传一组键值对
键表示域名,值表示是否显示该域,0表示不显示,1表示显示
*如果某个域给定0则表示不显示该域,其他的域均显示
如果某个域给定1则表示显示该域,其他的域均不显示
*_id永远默认为显示,除非设置为0
*除_id外其他域,必须拥有相同的设置,全部通过0来设置,或者全部通过1来设置
*如果不写该参数则表示显示所有域内容
query:以键值对的形式给出查找条件
例子:
查找年龄 16
db.class0.find({age:16},{_id:0})
*如果第一个参数为空字典则表示查找所有内容
findOne()
功能、参数:和find()完全相同,只是只返回第一条查找到的文档
query的更多用法
操作符 :使用$符号注明一个特殊字符串,表示一定的含义
例子:$lt 表示小于
比较操作符
$eq 等于
例子:筛选年龄等于16的
db.class0.find({age:{$eq:16}},{_id:0})
等价于----》db.class0.find({age:16},{_id:0})
$lt 小于
例子:查找年龄小于17
db.class0.find({age:{$lt:17}},{_id:0})
*mongo中字符串也可以比较大小
$lte 小于等于
例子:筛选小于等于17
db.class0.find({age:{$lte:17}},{_id:0})
$gt 大于
例子:筛选年龄大于17
db.class0.find({age:{$gt:17}},{_id:0})
$gte 大于等于
例子:筛选年龄大于等于17
db.class0.find({age:{$gte:17}},{_id:0})
$ne 不等于
例子:查找年龄不等于17
db.class0.find({age:{$ne:17}},{_id:0})
*如果一个文档没有这个age域则显示为不等于
$in 包含
例子:查找年龄在16,17,18当中
db.class0.find({age:{$in:[16,17,18]}},{_id:0})
$nin 不包含
例子:查找年龄不等于16,17,18的
db.class0.find({age:{$nin:[16,17,18]}},{_id:0})
逻辑操作符
$and 逻辑与
例子:年纪小于19并且性别为女
db.class0.find({age:{$lt:19},sex:'w'},{_id:0})
db.class0.find({$and:[{age:16},{name:'Lily'}]},{_id:0})
$or 逻辑或
例子:筛选年纪小于16或者名字是悟空的
db.class0.find({$or:[{age:{$lt:17}},{name:'悟空'}]},{_id:0})
$not 逻辑非
例子:筛选年纪不等于17
db.class0.find({age:{$not:{$eq:17}}},{_id:0})
$nor 即不也不,表示列表集合中的条件都不具备
例子:年纪不是17,性别也不是男的
db.class0.find({$nor:[{age:{$gt:18}},{sex:'w'}]},{_id:0})
数组查找
查看数组中包含某一项的
例子:
db.class0.find({hoby:'吃'},{_id:0})
$all
查找数组中同时包含多项的文档
db.class0.find({hoby:{$all:['拍电影','代言']}},{_id:0})
查找hoby数组中即有拍电影又有代言的文档
$size
查找数组元素个数为指定个数的文档
db.class0.find({hoby:{$size:3}},{_id:0})
数组切片显示
$slice
例子:显示数组的前两项
db.class0.find({hoby:{$size:3}},{_id:0,hoby:{$slice:2}})
其他查找方法:
$exists
判断一个域是否存在
例子:查找存在sex域的文档
db.class0.find({sex:{$exists:true}},{_id:0})
$mod
除数余数查找
例子:查找年纪除2余1的文档
db.class0.find({age:{$mod:[2,1]}},{_id:0})
$type
查找指定数据类型的文档
db.class0.find({age:{$type:1}},{_id:0})
数据类型对照mongodb官方文档,各个数字代表的数据类型
https://docs.mongodb.com/manual/reference/operator/query/type/index.html
进一步的信息筛选
distinct()
功能:查看一个集合中某个阈值的覆盖范围
例子:查看集合中age域的值都有哪些
db.class0.distinct('age')
pretty()
功能:将查询结果格式化显示
例子:
db.class0.find().pretty()
limit(n)
功能:查询结果显示前n条
例子:查询结果显示前三个
db.class0.find({},{_id:0}).limit(3)
skip()
功能:显示时跳过前n条
例子:查询结果跳过前3条
db.class0.find({},{_id:0}).skip(3)
count()
功能:对查找结果计算统计
例子:统计性别为w的数量
db.class0.find({sex:'w'},{_id:0}).count()
sort({键:1/-1})
功能:对查找结果排序
1表示按照升序排列,-1表示按照降序排序
例子:对查找结果按照年龄升序
db.class0.find({age:{$exists:true}},{_id:0}).sort({age:1})
复合排序
功能:当第一排序项相同的时候,按照第二排序项排序
例子:查询结果按照年龄升序,姓名降序
db.class0.find({age:{$exists:true}},{_id:0}).sort({age:1,name:-1})
函数的连续使用
例子:获取集合中年龄最小的三个文档
db.class0.find({age:{$exists:true}},{_id:0}).sort({age:1}).limit(3)