MongoDB常用条件查询(大小、逻辑、正则、数组、排序、数量、跳跃)

本文深入解析MongoDB中的各种查询技巧,包括条件查询、大小判断、逻辑组合、数组操作、排序与限制等,帮助读者掌握高效数据检索的方法。

find() 函数的查询结果有两种显示方式

一种是不使用局部变量接受,直接像本篇这样

这种查询方法默认显示20条数据

另一种是使用一个局部变量接受查询结果

这个局部变量就是所谓的“游标”,需要我们手动的去迭代游标

查询集合中的所有数据

// 本片使用的集合数据
{ "_id" : ObjectId("5f3e75c6d59f93d84c24dd37"), "name" : "可比克", "price" : 12 }
{ "_id" : ObjectId("5f3e75c6d59f93d84c24dd38"), "name" : "呀土豆", "price" : 15 }
{ "_id" : ObjectId("5f3e75c6d59f93d84c24dd39"), "name" : "炸薯条", "price" : 18 }
{ "_id" : ObjectId("5f3e75c6d59f93d84c24dd3a"), "name" : "原味薯条", "price" : 20 }
{ "_id" : ObjectId("5f3e7636d59f93d84c24dd3b"), "name" : "土豆条", "price" : 18 }
{ "_id" : ObjectId("5f3e767ad59f93d84c24dd3c"), "name" : "爱你薯条", "price" : 18, "sort" : [ "原味", "麻辣", "酸爽", "五香" ] }
db.goods.find()

goods 是一个数据库中的一个集合,相当于myslq数据库中的一张表

在这里插入图片描述

为了将查询结果更优雅得显示,可以使用 pretty() 对查询结果进行格式化

db.goods.find().pretty()

在这里插入图片描述

大小判断查询

  • 等于

    // 查询价格等于18的商品
    db.goods.find({price:18})
    
  • 不等于 $ne (not equal)

    // 查询价格不等于18的商品
    db.goods.find({price:{$ne:18}})
    
  • 大于 $gt (greater than)

    // 查询价格大于18的商品
    db.goods.find({price:{$gt:18})
    
  • 大于等于 $gte (greater than and equal)

    // 查询价格大于等于18的商品
    db.goods.find({price:{$gte:18}})
    
  • 小于 $lt (less than)

    // 查询价格小于18的商品
    db.goods.find({price:{$lt:18}})
    
  • 小于等于 $lte (less than and equal)

    // 查询价格小于等于18的商品
    db.goods.find({price:{$lte:18}})
    

逻辑条件查询

  • and 多条件同时满足,不同条件之间使用英文逗号隔开即可

    // 查询name为“炸薯条” 并且 price 为18的商品
    db.goods.find({name:'炸薯条',price:18}).pretty()
    

在这里插入图片描述

  • or 多条件满足之一即可

    $or 接收一个数组,数组中是多个文档,每个文档就是一个条件,只要满足数组中任何一个条件即可查询到

    // 查询 name 为“炸薯条” 或者 价格为18的商品
    db.goods.find({$or:[{name:'炸薯条'},{price:18}]}).pretty()
    

在这里插入图片描述

其他查询

对数组的查询

查询指定数组长度

// 查询数组长度为4的文档
db.goods.find({sort:{$size:4}})

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gvodF5Vh-1597934388715)(https://i.loli.net/2020/08/20/E3K2NsUhQSTArLd.png)]

$size 接收一个整数,表示长度等于多少

查询数组里某一个值

// 查询数组 sort 中含有 “五香” 的文档
db.goods.find({sort:'五香'}).pretty()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ik2VYEcB-1597934388717)(https://i.loli.net/2020/08/20/mKsGBJaC3zTHQ9E.png)]

指定查询数量

limit(x) 指定返回 x 条数据

如果查询到的结果数量大于 x ,只显示前 x 条数据

否则显示查询到的所有数据

db.goods.find({price:{$gt:15}}).limit(3)

在这里插入图片描述

跳跃查询

find() 函数会对查询结果进行排序,默认从第一个开始显示

skip(x) 跳过查询结果的前 x 条,从 x+1 条数据开始显示

// 遍历集合,从集合的第四条数据开始显示
db.goods.find().skip(3)

// 查询 name 为“炸薯条”,或者价格等于18的商品,从查询结果的第二条数据开始显示
db.goods.find({$or:[{name:'炸薯条'},{price:18}]}).pretty().skip(1)

在这里插入图片描述

对查询结果进行排序

sort({指定的列 : number})

按照指定的列进行排序

number 为 1 代表升序,-1代表降序

// 查询价格大于等于15的商品,升序排列
db.goods.find({price:{$gte:15}}).sort({price:1}).pretty()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nLULSiOt-1597934388719)(https://i.loli.net/2020/08/20/Sr4j9wcDA8WnhLt.png)]

// 查询价格大于等于15的商品,降序排列
db.goods.find({price:{$gte:15}}).sort({price:-1}).pretty()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fVeLqUug-1597934388721)(https://i.loli.net/2020/08/20/ATlfYyEIvmZVawL.png)]

使用正则表达式查询

MongoDB支持的正则表达式与 js 中相同

正则表达式使用 $regex

// 查询name中含有“薯条”的商品
db.goods.find({name:{$regex:"薯条"}}).pretty()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值