MongoDB——》基础查询(基本、比较运算符、逻辑运算符、范围、正则、数组、排序、投影、限数、去重、统计)

版权声明:本文为博主原创文章,无需授权即可转载,甚至无需保留以上版权声明,转载时请务必注明作者。
https://blog.csdn.net/weixin_43453386/article/details/84956751

投影、限数、去重、统计))

db:当前数据库名
test:当前集合名

一、基本查询:find

序号关键字说明查询语句
1find查询db.test.find({条件})
2findOne查询:一个db.test.findOne({条件})
3pretty查询结果格式化db.test.find({条件}).pretty()

二、比较运算符查询:$lt、$lte、$gt、$gte、$ne

序号关键字说明查询语句
1$lt<# 查询年龄小于18

db.test.find({age:{$lt:18}})
2$lte<=# 查询年龄小于等于18

db.test.find({age:{$lte:18}})
3$gt># 查询年龄大于18

db.test.find({age:{$gt:18}})
4$gte>=# 查询年龄大于等于18

db.test.find({age:{$gte:18}})
5$ne!=# 查询年龄不等于18

db.test.find({age:{$ne:18}})

三、逻辑运算符查询:$or

序号关键字说明查询语句
1# 查询年龄小于18并且名字是小花

db.test.find({age:{$lt:18},name:"小花"})
2$or# 查询年龄小于18或者名字是小花

db.test.find({$or:[{age:{$lt:18}},{name:"小花"}]})
3或、与# 查询年龄小于18或者名字是小花,并且性别为男

db.test.find({$or:[{age:{$lt:18}},{name:"小花"}],sex:"男"})

四、范围查询:$in、$nin、$not

序号关键字说明查询语句
1$in在范围内# 查询年龄为18,28

db.test.find({age:{$in:[18, 28]}})
2$nin不在范围内# 查询年龄不为18,28

db.test.find({age:{$nin:[18, 28]}})
3$not $in不在范围内# 查询年龄不为18,28

db.test.find({age: {$not: {$in:[18,28]}}})
4$not不等于# 查询名字不以T开头的

db.test.find({name: {$not: /^T.*/}});

五、正则查询

序号关键字说明查询语句
1# 模糊查询

db.test.find({name:/李/})


# 模糊查询:以"李" 开头

db.test.find({name:/^李/})


# 模糊查询:以"李" 结尾

db.test.find({name:/李$/})


# 模糊查询:忽略大小写

db.test.find({name:/stephen?/i})

六、数组查询

序号关键字说明查询语句
1# 数组查询:数组中所有包含banana

db.test.find({"fruit":"banana"})


# 数组查询:同时包含bananat和apple(顺序无关紧要)

db.test.find({"fruit": {"$all": ["banana","apple"]}})


# 数组查询:精确匹配(数据必须和查询条件完全匹配,顺序也必须保持一致)

db.test.find({"fruit":["apple","banana","peach"]})


# 数组查询:下标(数组的起始下标是0)

db.test.find({"fruit.2":"peach"})
2$size数组长度# 数组查询:长度

db.test.find({"fruit": {$size : 3}})

七、排序:sort

序号关键字说明查询语句
1sort排序:1升序,-1降序# 按年龄降序,按名称升序

db.test.find({}).sort({age:-1,name:1})

八、投影

序号关键字说明查询语句
1选择显示的字段:1显示,0不显示

(_id列是默认显示的)
# 只显示年龄和名称(默认返回_id)

db.test.find({},{name:1,age:1})


# 只显示年龄和名称(不返回_id)

db.test.find({},{_id:0,name:1,age:1})


九、限制指定条数、跳过指定条数:limit、skip

序号关键字说明查询语句
1limit读取指定数量# 查询年龄为18的2条数据

db.test.find({age:18}).limit(2)
2skip跳过指定数据# 查询年龄为18,并跳过2条数据

db.test.find({age:18}).skip(2)
3limit、skip当查询时同时使用sort,skip,limit,
无论位置先后,
最先执行顺序 sort再skip再limit
skip和limit方法只适合小数据量分页,
如果是百万级效率就会非常低,
因为skip方法是一条条数据数过去的
# 查询年龄为18,并跳过2条数据,再取2条数据

db.test.find({age:18}).limit(2).skip(2)
db.test.find({age:18}).skip(2).limit(2)

十、去重:distinct

序号关键字说明查询语句
1distinct去重# 查询年龄为18,并且城市不重复的数据

db.test.distinct("city",{age:18})

十一、统计:count

序号关键字说明查询语句
1count计数# 查询年龄为18的总数

db.test.find({age:18}).count()

十二、字段是否存在:$exists

序号关键字说明查询语句
1$exists字段是否存在:true存在,false不存在# 查询包含age字段的数据

db.test.find({age: {$exists: true}})
2值为null,或字段不存在# 查询age字段不存在或者值为null的数据

db.test.find({age:null})
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值