MongoDB查询

第二天

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({})




















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值