第二天
db.collectionName
查找操作
select ... from tableName where
db.collection.find() ----> select *from tableName
find(query,field)
功能 :查找所有符合条件的文档
参数:query :筛选条件 相当于where字句
field:展示的域 相当于select的展示部分
返回: 参数
fileld 参数: 选择要展示的域 传一组键值对
键表示域值表示是否显示该域名 0 表示不显示 传一组键值对
* 如果某个域给定 0 则表示不显示域,其他的域均显示
如果某个域给定1 则b表示显示该域,其他的域都不显示
* _id永远默认为显示,除非设置 0
*除_id外其他域,必须拥有相同的设置,全为0或者全为1
*如果不写该参数则表示显示所有域内容
eg: db..class0.find({},{_id:0,name:1,age:1})
query : 以键值对的形式给出查找条件
查找年龄 17
eg : db.class0.find({age:17},{_id:0}
*如果不写第一个参数则表示查找所有内容
query 的更多用法
操作符 : 使用$符号注明一个特殊字符串,表示一定含义
eg: $lt 表示 小于
$eq 等于
eg: db.class0.find(age:{$eq:17}},{_id:0})
筛选年龄为17的
======》 等价于 db.class0.find({age:17},{_id:0})
$lt 小于 <
eg: db.class0.find({age:{$lt:17}},{_id:0}
*mongo 中字符串也可以比较大小
$lte 小于等于 <=
eg: db.class0.find({age:{$lte:17}},{_id:0}
$gt 大于 >
eg: db.class0.find({age:{$gt:17}},{_id:0}
$gte 大于等于 >=
eg: db.class0.find({age:{$gte:17}},{_id:0}
$ne 不等于 !=
eg: db.class0.find({age:{$ne:17}},{_id:0}
如果一个文档没有这个age域则显示为不等于
$in 包含
eg: db.class0.find({age:{$in:[16,17,18]}},{_id:0}
$nin 不包含
eg: db.class0.find({age:{$nin:[16,17,18]}},{_id:0}
逻辑操作符
$and 逻辑与
年龄小于 19 并且性别为男
db.class0.find({age:17,
$not 逻辑或
eg: db.class0.find({age:{$not:{$eq:17}}},{_id:0})
$not 既不也不 (表示列表集合中的条件都不具备)
eg: db.class0.find({$$nor:[{age:{$gt:18}},{sex:'m'},{_id:0}]
条件混合
(年龄小于20 或者 姓名为Lily) 并且 性别为女的人
db.class0.find({$and:[{$age:[{age:{$age:{$lt:20}},{name:'阿红'}]},{sex:'w'}]},{_id:0})
数组查找:
查看数组中包含某一项的
eg: db.class1.find({hobby:'吃'},{_id:0})
$all 查找一个数组中同时包含多项的文档
eg: db.class1.find({hobby:{$all:['拍电影','代言']}},{_id:0})
查找h
obby数组中既有拍电影,又有代言的文档
$size 查找数组元素个数为指定个数的文档
eg: db.class1.find({hobby:{$size:3}},{_id:0})
查找hobby数组中包含三项的文档
数组切片显示
$slice 对数组切片显示
eg: db.class1find({hobby:{$size:3}},{_id:0,hobby:{$slice:2}}) 显示数组的前两项
eg; db.class1find({hobby:{$size:3}},{_id:0,hobby:{$slice:[1,2]}}) 跳过第一项,显示后面两项
其他查找方法
$exists 判断一个域是否存在
eg: 查找存在sex域的文档
db.class0.find({sex:{$exists:ture}},{_id:0)
eg: 查找不存在sex域的文档
db.class0.find({sex:{$exists:false}},{_id:0)
$mod 做除数余数查找
eg: 查找年龄 被2除余1的文档
db.class0.find({age:{$mod:[2:1]}},{_id:0})
$type 查找指定数据类型的文档
eg: 查找hobby中包含数据类型为2 的数据的文档
db.class.find({hobby:{$type:2}},{_id:0})
进一步的信息筛选
distinct()
功能 :查看一个集合中某个域的覆盖范围
eg: 查看集合中age域的值都有哪些
db.class0.distinct('age')
pretty()
功能 : 将查询结果格式化显示
eg: db.class0.find().pretty()
limit(n)
功能: 查询结果显示前3个
db.class0.find({},{_id:0}).limit(3)
skip(n)
功能 : 显示时跳过前n条
eg: 显示前跳过前三条
db.class0.find({},{_id:0}).skip(3)
count()
功能: 对查找结果计数统计
eg: db.class0.find({sex:'m'},{_id:0}.count}).count() 统计sex为m的文档数量
sort()
功能 : 对查找结果排序({键:1/-1})
1 表示按照升序排序 -1表示按照降序排序
对查找结果按照年龄升序排序
db.class0.find({age:{$exists:ture}},{_id:0}).sort({age:1})
复合排序:当第一排序项相同时候,按照第二个排序项排序
db.class0.find({age:{$exists:true}},{_id:0}).sort(age:1,name:-1})
函数的连续使用
获取集合中年龄最小的三个文档
db.class0.find({},{_id,0}).sort({age:1}).limit(3)
删除文档:
delete form tableName where ......
db.collectionName.remove(query,justOne)
功能: 删除指定的文档
参数: query : 筛选要删除的文档,类似where字句
用法同 查找操作
justOne:布尔值 默认false 表示删除所有筛选数据
eg: db.class0.remove({$or:[{age:{$exists:false}},{age:{$gt:100}}]})
删除第一个复合条件的文档
db.class0.remove({sex:{$exists:false}},true)
删除集合中所有文档
db.collectionName.remove({})