3.非关系型数据库(Nosql)之mongodb:升降序排序,排序分页,$all,$in,$nin,$or,$nor, $exists,游标,更新(update,$set,$unset,$inc)

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介:  1排序sort() A降序排列 db.c4.find().sort().sort({age:-1}); B升序排列: db.c4.find().sort({age:-1}); C排序分页 db.collectionName.find().sort({age:-1}).skip(2


1排序sort()

A降序排列

db.c4.find().sort().sort({age:-1});

B升序排列:

db.c4.find().sort({age:-1});

C排序分页

db.collectionName.find().sort({age:-1}).skip(20).limit(10);

 

eg:db.c4.find().sort({age:-1}).skip(20).limit(10);

2 $all,$in,$nin,$or,$nor,$exists

查询集合中的文档,$all主要用来查询数组中的包含关系,查询条件中只要有一个不包含就不返回。

$all(只有都包含才会显示)

> db.c5.insert({name:’zhangsan’,age:[1,2,3,4,5,9,10]});

WriteResult({ “nInserted” : 1 })

> db.c5.insert({name:’lisi’,age:[2,4,7,9,10]});

WriteResult({ “nInserted” : 1 })

> db.c5.insert({name:’wangwu’,age:[4,7,8,16,24]});

WriteResult({ “nInserted” : 1 })

> db.c5.find({age:{$all:[4,7,9]}});

{ “_id” : ObjectId(“543e20c5e2c90313035e7d06”), “name” : “lisi”, “age” : [ 2, 4, 7, 9, 10 ] }

$in(只要有包含1个就显示)

> db.c5.find();

{ “_id” : ObjectId(“543e2098e2c90313035e7d05”), “name” : “zhangsan”, “age” : [ 1, 2, 3, 4, 5, 9, 10

] }

{ “_id” : ObjectId(“543e20c5e2c90313035e7d06”), “name” : “lisi”, “age” : [ 2, 4, 7, 9, 10 ] }

{ “_id” : ObjectId(“543e20ece2c90313035e7d07”), “name” : “wangwu”, “age” : [ 4, 7, 8, 16, 24 ] }

>db.c5.find({age:{$in:[1,2,3]}});

{ “_id” : ObjectId(“543e2098e2c90313035e7d05”), “name” : “zhangsan”, “age” : [ 1, 2, 3, 4, 5, 9, 10

] }

{ “_id” : ObjectId(“543e20c5e2c90313035e7d06”), “name” : “lisi”, “age” : [ 2, 4, 7, 9, 10 ] }

$nin (表示不包含的才显示)

> db.c5.find();

{ “_id” : ObjectId(“543e2098e2c90313035e7d05”), “name” : “zhangsan”, “age” : [ 1, 2, 3, 4, 5, 9, 10

] }

{ “_id” : ObjectId(“543e20c5e2c90313035e7d06”), “name” : “lisi”, “age” : [ 2, 4, 7, 9, 10 ] }

{ “_id” : ObjectId(“543e20ece2c90313035e7d07”), “name” : “wangwu”, “age” : [ 4, 7, 8, 16, 24 ] }

>db.c5.find({age:{$nin:[1,2,3]}});

{ “_id” : ObjectId(“543e20ece2c90313035e7d07”), “name” : “wangwu”, “age” : [ 4, 7, 8, 16, 24 ] }

$or (相当于或)

> db.c6.find({$or:[{name:”zhangsan”},{age:25}]})

{ “_id” : ObjectId(“543e2409e2c90313035e7d08”), “name” : “zhangsan”, “age” : 24 }

{ “_id” : ObjectId(“543e2432e2c90313035e7d09”), “name” : “lisi”, “age” : 25 }

{ “_id” : ObjectId(“543e2451e2c90313035e7d0a”), “name” : “wangwu”, “age” : 25 }

$nor

查询集合中的文档,$nor,表示根据条件过滤掉某些数据,例如:查询name不是user2,age不是3的文档,命令为:

db.collectionName.find({$nor:[{name:”user1”},{age:3}]});

> db.c6.find();

{ “_id” : ObjectId(“543e2409e2c90313035e7d08”), “name” : “zhangsan”, “age” : 24 }

{ “_id” : ObjectId(“543e2432e2c90313035e7d09”), “name” : “lisi”, “age” : 25 }

{ “_id” : ObjectId(“543e2451e2c90313035e7d0a”), “name” : “wangwu”, “age” : 25 }

> db.c6.find({$or:[{name:”zhangsan”},{age:25}]})

{ “_id” : ObjectId(“543e2409e2c90313035e7d08”), “name” : “zhangsan”, “age” : 24 }

{ “_id” : ObjectId(“543e2432e2c90313035e7d09”), “name” : “lisi”, “age” : 25 }

{ “_id” : ObjectId(“543e2451e2c90313035e7d0a”), “name” : “wangwu”, “age” : 25 }

> db.c6.find({$nor:[{name:”zhangsan”},{age:25}]})

$exists

查询集合中的文档,$exists,用于查询集合中存在某个键的文档或不存在某个键的文档,例如查询customer集合中存在name键的所有文档,可以使用db.collectionName.find({name:{$exists:1}});

$exists:1表示真,指存在

$exists:0表示假,指不存在

分别查询包含name属性的和包含sex属性的数据

3游标

游标(相当于数据库的一个临时的存储区,它是存放在内存中的,查找某个集合返回记录,我可以把这些记录放在游标当中,然后我可以迭代游标)。

查询集合中的文档,类似关系型数据库,mongodb中也有游标的概念

4更新

> show dbs;

admin (empty)

local 0.078GB

test  0.078GB

> use toto

switched to db toto

> db

toto

> use test

switched to db test

> use toto

switched to db toto

> db

Toto

> db.c1.insert({name:"zhangsan",age:19});

WriteResult({ "nInserted" : 1 })

> db.c1.insert({name:"lis",age:25});

WriteResult({ "nInserted" : 1 })

> db.c1.insert({name:"wangwu",age:23});

WriteResult({ "nInserted" : 1 })

> db.c1.insert({name:"zhaoliu",age:27});

WriteResult({ "nInserted" : 1 })

> db.c1.insert({name:"tianqi",age:33});

WriteResult({ "nInserted" : 1 })

> db.c1.find();

{ "_id" : ObjectId("543e3223e2c90313035e7d0e"), "name" : "zhangsan", "age" : 19 }

{ "_id" : ObjectId("543e3244e2c90313035e7d0f"), "name" : "lis", "age" : 25 }

{ "_id" : ObjectId("543e3259e2c90313035e7d10"), "name" : "wangwu", "age" : 23 }

{ "_id" : ObjectId("543e3270e2c90313035e7d11"), "name" : "zhaoliu", "age" : 27 }

{ "_id" : ObjectId("543e3294e2c90313035e7d12"), "name" : "tianqi", "age" : 33 }

更新操作:

db.collectionName.update({条件},{修改的值}),函数中4个参数的介绍

1. 设置更新的条件

2. 设置更新的内容的对象

3. 如果没有符合条件的记录,是否新增一条记录(取值为0/1)

4. 如果有多条记录符合,是否全部更新(取值0/1

db.collectionName.update({条件},{修改的值})

1. 更新的时候只更新到一条,且其它的key:value覆盖掉了

2. 我只更新到一条

> db.c1.find();

{ "_id" : ObjectId("543e3244e2c90313035e7d0f"), "age" : 36 }

{ "_id" : ObjectId("543e3259e2c90313035e7d10"), "name" : "wangwu", "age" : 23 }

{ "_id" : ObjectId("543e3270e2c90313035e7d11"), "name" : "zhaoliu", "age" : 27 }

{ "_id" : ObjectId("543e3294e2c90313035e7d12"), "name" : "tianqi", "age" : 33 }

> db.c1.update({age:36},{$set:{name:"zhangsan"}},0,1);

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> db.c1.find();

{ "_id" : ObjectId("543e3244e2c90313035e7d0f"), "age" : 36, "name" : "zhangsan" }

{ "_id" : ObjectId("543e3259e2c90313035e7d10"), "name" : "wangwu", "age" : 23 }

{ "_id" : ObjectId("543e3270e2c90313035e7d11"), "name" : "zhaoliu", "age" : 27 }

{ "_id" : ObjectId("543e3294e2c90313035e7d12"), "name" : "tianqi", "age" : 33 }

 

> db.c1.find();

{ "_id" : ObjectId("543e3244e2c90313035e7d0f"), "age" : 36, "name" : "zhangsan" }

{ "_id" : ObjectId("543e3259e2c90313035e7d10"), "name" : "wangwu", "age" : 23 }

{ "_id" : ObjectId("543e3270e2c90313035e7d11"), "name" : "zhaoliu", "age" : 27 }

{ "_id" : ObjectId("543e3294e2c90313035e7d12"), "name" : "tianqi", "age" : 33 }

> db.c1.update({age:24},{$set:{name:"tuzuoquan",age:24}},1,0);

WriteResult({

       "nMatched" : 0,

       "nUpserted" : 1,

       "nModified" : 0,

       "_id" : ObjectId("543e3644dd76b7dcaba68faf")

})

> db.c1.find();

{ "_id" : ObjectId("543e3244e2c90313035e7d0f"), "age" : 36, "name" : "zhangsan" }

{ "_id" : ObjectId("543e3259e2c90313035e7d10"), "name" : "wangwu", "age" : 23 }

{ "_id" : ObjectId("543e3270e2c90313035e7d11"), "name" : "zhaoliu", "age" : 27 }

{ "_id" : ObjectId("543e3294e2c90313035e7d12"), "name" : "tianqi", "age" : 33 }

{ "_id" : ObjectId("543e3644dd76b7dcaba68faf"), "age" : 24, "name" : "tuzuoquan" }

5 inc

更新集合中的文档,使用$inc将集合中nameuser1age1,其它键不变,$inc表示使某个键值加减指定的数值。

> for(var i=1;i<=20;i++){ db.c2.insert({name:"tuzuoquan",age:24}); }

WriteResult({ "nInserted" : 1 })

> db.c2.find();

{ "_id" : ObjectId("543e386ee2c90313035e7d13"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e386ee2c90313035e7d14"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d15"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d16"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d17"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d18"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d19"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1a"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1b"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1c"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1d"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1e"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1f"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d20"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d21"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d22"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d23"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d24"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d25"), "name" : "tuzuoquan", "age" : 24 }

{ "_id" : ObjectId("543e38a5e2c90313035e7d26"), "name" : "tuzuoquan", "age" : 24 }

db.c2.update({name:"tuzuoquan"},{$inc:{age:1}},0,1);

6 $unset(删除某个键)

更新集合中的文档,$unset用来删除某个键,例如删除nameuser1的文档中address键,可以使用命令:

db.c1.update({name:”user”},{$unset:{age:1}},0,1);

>db.c2.update({name:"tuzuoquan"},{$unset:{age:1}},0,1);

WriteResult({ "nMatched" : 20, "nUpserted" : 0, "nModified" : 20 })

> db.c2.find();

{ "_id" : ObjectId("543e386ee2c90313035e7d13"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e386ee2c90313035e7d14"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d15"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d16"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d17"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d18"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d19"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1a"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1b"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1c"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1d"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1e"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d1f"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d20"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d21"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d22"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d23"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d24"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d25"), "name" : "tuzuoquan" }

{ "_id" : ObjectId("543e38a5e2c90313035e7d26"), "name" : "tuzuoquan" }

 

目录
相关文章
|
4月前
|
NoSQL MongoDB 数据库
数据库数据恢复—MongoDB数据库数据恢复案例
MongoDB数据库数据恢复环境: 一台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 工作人员在MongoDB服务仍然开启的情况下将MongoDB数据库文件拷贝到其他分区,数据复制完成后将MongoDB数据库原先所在的分区进行了格式化操作。 结果发现拷贝过去的数据无法使用。管理员又将数据拷贝回原始分区,MongoDB服务仍然无法使用,报错“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”
|
4月前
|
缓存 NoSQL Linux
在CentOS 7系统中彻底移除MongoDB数据库的步骤
以上步骤完成后,MongoDB应该会从您的CentOS 7系统中被彻底移除。在执行上述操作前,请确保已经备份好所有重要数据以防丢失。这些步骤操作需要一些基本的Linux系统管理知识,若您对某一步骤不是非常清楚,请先进行必要的学习或咨询专业人士。在执行系统级操作时,推荐在实施前创建系统快照或备份,以便在出现问题时能够恢复到原先的状态。
345 79
|
4月前
|
存储 NoSQL MongoDB
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
223 8
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
|
8月前
|
NoSQL 测试技术 MongoDB
微服务——MongoDB实战演练——根据上级ID查询文章评论的分页列表
本节介绍如何根据上级ID查询文章评论的分页列表,主要包括以下内容:(1)在CommentRepository中新增`findByParentid`方法,用于按父ID查询子评论分页列表;(2)在CommentService中新增`findCommentListPageByParentid`方法,封装分页逻辑;(3)提供JUnit测试用例,验证功能正确性;(4)使用Compass插入测试数据并执行测试,展示查询结果。通过这些步骤,实现对评论的高效分页查询。
119 0
|
3月前
|
运维 NoSQL 容灾
告别运维噩梦:手把手教你将自建 MongoDB 平滑迁移至云数据库
程序员为何逃离自建MongoDB?扩容困难、运维复杂、高可用性差成痛点。阿里云MongoDB提供分钟级扩容、自动诊断与高可用保障,助力企业高效运维、降本增效,实现数据库“无感运维”。
|
7月前
|
NoSQL MongoDB 数据库
数据库数据恢复——MongoDB数据库服务无法启动的数据恢复案例
MongoDB数据库数据恢复环境: 一台Windows Server操作系统虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 管理员在未关闭MongoDB服务的情况下拷贝数据库文件。将MongoDB数据库文件拷贝到其他分区后,对MongoDB数据库所在原分区进行了格式化操作。格式化完成后将数据库文件拷回原分区,并重新启动MongoDB服务。发现服务无法启动并报错。
【YashanDB知识库】update (子查询) set ORG_ID_STAN -ID 改写
【YashanDB知识库】update (子查询) set ORG_ID_STAN -ID 改写
|
8月前
|
存储 NoSQL MongoDB
微服务——MongoDB常用命令1——数据库操作
本节介绍了 MongoDB 中数据库的选择、创建与删除操作。使用 `use 数据库名称` 可选择或创建数据库,若数据库不存在则自动创建。通过 `show dbs` 或 `show databases` 查看所有可访问的数据库,用 `db` 命令查看当前数据库。注意,集合仅在插入数据后才会真正创建。数据库命名需遵循 UTF-8 格式,避免特殊字符,长度不超过 64 字节,且部分名称如 `admin`、`local` 和 `config` 为系统保留。删除数据库可通过 `db.dropDatabase()` 实现,主要用于移除已持久化的数据库。
522 0
|
8月前
|
存储 NoSQL MongoDB
从 MongoDB 到 时序数据库 TDengine,沃太能源实现 18 倍写入性能提升
沃太能源是国内领先储能设备生产厂商,数十万储能终端遍布世界各地。此前使用 MongoDB 存储时序数据,但随着设备测点增加,MongoDB 在存储效率、写入性能、查询性能等方面暴露出短板。经过对比,沃太能源选择了专业时序数据库 TDengine,生产效能显著提升:整体上,数据压缩率超 10 倍、写入性能提升 18 倍,查询在特定场景上也实现了数倍的提升。同时减少了技术架构复杂度,实现了零代码数据接入。本文将对 TDengine 在沃太能源的应用情况进行详解。
356 0
|
9月前
|
存储 NoSQL MongoDB
数据库数据恢复—MongoDB数据库迁移过程中丢失文件的数据恢复案例
某单位一台MongoDB数据库由于业务需求进行了数据迁移,数据库迁移后提示:“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”

推荐镜像

更多
下一篇
开通oss服务