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

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 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" }

 

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
1月前
|
存储 监控 NoSQL
九大核心NoSQL数据库及使用场景详解
【10月更文挑战第6天】在当今大数据与云计算飞速发展的时代,NoSQL数据库以其灵活的数据模型、可扩展性和高性能,成为了众多应用场景下的首选。本文将为您详细介绍九大核心NoSQL数据库及其典型使用场景,帮助您在工作和学习中更好地选择和应用。
58 3
|
7天前
|
存储 缓存 NoSQL
常见的 NoSQL 数据库有哪些?
常见的 NoSQL 数据库有哪些?
11 2
|
23天前
|
存储 SQL JSON
介绍一下RDBMS和NoSQL数据库之间的区别
【10月更文挑战第21天】介绍一下RDBMS和NoSQL数据库之间的区别
48 2
|
1月前
|
SQL NoSQL Java
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
本文介绍了如何在Spring Boot中操作NoSQL数据库MongoDB,包括在MongoDB官网创建服务器、配置Spring Boot项目、创建实体类、仓库类、服务类和控制器类,以及如何进行测试。
19 1
springboot操作nosql的mongodb,或者是如何在mongodb官网创建服务器并进行操作
|
23天前
|
存储 SQL NoSQL
数据库技术深度探索:从关系型到NoSQL的演变
【10月更文挑战第21天】数据库技术深度探索:从关系型到NoSQL的演变
31 1
|
30天前
|
存储 NoSQL 搜索推荐
nosql
【10月更文挑战第14天】nosql
19 2
|
1月前
|
NoSQL MongoDB 数据库
MongoDB是一个NoSQL数据库,有着多种不同的命令和操作。以下是一些常见的MongoDB命令:
一些常用的MongoDB命令,如数据库和集合的管理、数据的插入、查询、更新、删除以及聚合操作等。
24 1
|
25天前
|
NoSQL 前端开发 MongoDB
前端的全栈之路Meteor篇(三):运行在浏览器端的NoSQL数据库副本-MiniMongo介绍及其前后端数据实时同步示例
MiniMongo 是 Meteor 框架中的客户端数据库组件,模拟了 MongoDB 的核心功能,允许前端开发者使用类似 MongoDB 的 API 进行数据操作。通过 Meteor 的数据同步机制,MiniMongo 与服务器端的 MongoDB 实现实时数据同步,确保数据一致性,支持发布/订阅模型和响应式数据源,适用于实时聊天、项目管理和协作工具等应用场景。
|
1月前
|
存储 SQL 分布式计算
NoSQL 简介
10月更文挑战第10天
29 0
|
1月前
|
存储 NoSQL API
.NET NoSQL 嵌入式数据库 LiteDB 使用教程
.NET NoSQL 嵌入式数据库 LiteDB 使用教程~