mongoDB查找操作

查找操作

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)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值