MongoDB--高级查询相关操作,全面且易懂

高级查询(一)

$all 匹配所有

假设有集合 hobbies 内容如下:

_idnamesexhobbies
1小红唱歌,跳舞,羽毛球
2小明唱歌,乒乓球,羽毛球
3小亮乒乓球,羽毛球

查询其中所有喜欢“唱歌”和“羽毛球”的人:

  1. db.hobbies.find({hobbies:{$all:["唱歌","羽毛球"]})

查询结果如图1所示:

图1

图 1

  • $all 会查询满足方括号中所有条件的文档,如果只有其中一项满足是不会被查询出来的。
$exists 判断字段是否存在

在集合 hobbies 中更新文档:

  1. db.hobbies.save({_id:1,name:"小红",age:18,sex:"女",hobbies:["唱歌","跳舞","羽毛球"]}) #添加小红年龄18
  • 查询 hobbies 集合中存在 age 字段的文档,如图 2 所示:

图2

                                                                      图 2

  • hobbies 集合中不存在 age 字段的文档,如图 3 所示:

图3

                                                                       图 3

$mod 取模运算

在集合 hobbies 中更新文档:

  1. db.hobbies.update({_id:2},{$set:{age:20}}) #添加小明年龄20
  2. db.hobbies.update({_id:3},{$set:{age:22}}) #添加小亮年龄22

查询 age 取模7等于4的文档:

  1. db.hobbies.find({age:{$mod:[7,4]}})

查询结果如如图4所示::

图4

                                                                         图 4

$in 包含

查询 age =17或 age =20的文档 :

  1. db.hobbies.find({age:{$in:[17,20]}})

查询结果如图5所示:

图5

                                                                      图 5

$nin 不包含

查询 age !=17且 age !=20的文档:

  1. db.hobbies.find({age:{$nin:[17,20]}})

查询结果如图6所示:

图6

                                                                     图 6

$size 数组元素个数

可以查询特定长度的数组,比如 hobbies 这一字段,查询有两个爱好的文档:

  1. db.hobbies.find({hobbies:{$size:2}})

查询结果如图7所示:

图7

                                                                   图 7

查询结果排序

查询结果排序语法如下:

  1. db.collection.find().sort({_id:1}) #将查询结果按照_id升序排序
  2. db.collection.find().sort({_id:-1}) #将查询结果按照_id降序排序

高级查询(二) 

假设数据库有集合 student 如下:

_idnameagesexmajor
1王晓丽19计算机
2张明21计算机
3秋雅20播音主持
4张欣欣18表演
$or 条件之间的或查询

$or 表示多个查询条件之间是或的关系,比如查询性别 sex 为 男 或年龄 age 为18的文档信息:

  1. db.student.find({$or:[{sex:"男"},{age:18}]})

查询结果,如图8所示:

图1

                                                                     图 8

$and 条件之间的且查询

$and表示多个查询条件之间是且的关系,比如查询年龄 age 大于18且小于21(18 < age < 21)的信息:

  1. db.student.find({$and:[{age:{$gt:18}},{age:{$lt:21}}]})

查询结果,如图9所示:

图2

                                                                 图 9

$not 条件取反查询

$not 用来执行取反操作,比如查询年龄 age 大于等于20岁,然后进行取反(即查询年龄小于20岁的文档):

  1. db.student.find({age:{$not:{$gte:20}}})

查询结果,如图10所示:

图3

                                                                 图 10

正则表达式匹配查询

查询不符合major=计*开头文档:

  1. db.student.find({major:{$not:/^计.*/}})

查询结果,如图11所示:

图4

                                                               图 11

count() 返回结果集总数

比如返回上一步正则查询到的结果集有几条:

  1. db.student.find({major:{$not:/^计.*/}}).count()

查询结果,如图12所示:

图5

                                                               图 12

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MongoDB是一个流行的NoSQL数据库,提供了许多高级操作来处理和管理数据。以下是一些MongoDB高级操作: 1. 聚合操作MongoDB的聚合操作可以对集合中的文档进行复杂的数据处理和分析。它包括管道操作符,可以进行排序、筛选、分组、映射、限制和计算等操作,以生成所需的结果。 2. 索引优化:索引是MongoDB中优化查询性能的重要工具。通过为经常查询的字段创建索引,可以加快查询速度。MongoDB支持多种类型的索引,如单字段索引、组合索引、文本索引和地理空间索引等。 3. 事务处理:MongoDB从版本4.0开始支持事务处理。事务是一组关联操作的集合,要么全部成功执行,要么全部失败回滚。事务处理可确保在并发环境下数据的一致性和完整性。 4. 数据备份和恢复:MongoDB提供了多种备份和恢复数据的方式。可以使用mongodump和mongorestore命令行工具进行全量备份和恢复,也可以使用Oplog来进行增量备份和恢复。 5. 数据迁移:当需要将数据从一个MongoDB实例迁移到另一个实例时,可以使用mongodump和mongorestore命令行工具来执行全量数据迁移。同时,还可以使用MongoDB的复制集和分片集群功能来实现数据的高可用和水平扩展。 6. 数据加密:MongoDB提供了字段级别的数据加密功能。可以使用客户端端到端加密的方式来保护敏感数据,确保数据在存储和传输过程中的安全性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值