【数据库】MongoDB

news/2024/5/20 9:10:45

文章目录

    • @[toc]
      • 数据库操作
        • 查询数据库
        • 切换数据库
        • 查询当前数据库
        • 删除数据库
        • 查询数据库版本
      • 数据集合操作
        • 创建数据集合
        • 查询数据集合
        • 删除数据集合
      • 数据插入
        • 插入id重复的数据
      • 数据更新
        • 数据更新一条
          • 丢失其他字段
          • 保留其他字段
        • 数据批量更新
      • 数据删除
        • 数据删除一条
        • 数据批量删除
      • 数据查询
        • 创建数据集合
        • 数据查询一条
        • 查询格式化输出
        • 运算符
          • 比较运算符
          • 范围运算符
          • 逻辑运算符
        • 正则表达式查询
        • 分页
          • 查询前两条数据
          • 略过前两条数据
        • 自定义查询
        • 投影
        • 排序
        • 统计
        • 去重
        • 聚合操作
          • $group
            • 按指定字段分组
            • 不进行分组
          • $project
            • 投影
            • 别名
          • $match
          • $sort
          • $limit
          • $skip

因上努力

个人主页:丷从心·

系列专栏:MongoDB

学习指南:数据库

果上随缘


数据库操作

查询数据库
show dbs
切换数据库
  • MongoDB中无需手动创建数据库,当切换到一个不存在的数据库时,会自动创建一个数据库
use student_info
查询当前数据库
db
删除数据库
use student_infodb.dropDatabase()
查询数据库版本
db.version()

数据集合操作

创建数据集合
db.createCollection('class_1')
  • 也可以不用手动创建数据集合,当使用一个不存在的数据集合时,会自动创建一个数据集合
查询数据集合
show collections
show tables
删除数据集合
db.class_1.drop()

数据插入

use student_infodb.class_1.insertOne({'name': 'follow__my_heart', 'age': 22})
  • 数据查询
db.class_1.find()
插入id重复的数据
db.class_1.insertOne({_id: 10010, 'name': 'follow__my_heart', 'age': 22})db.class_1.save({_id: 10010, 'name': 'follow__my_heart', 'age': 18})

数据更新

数据更新一条
丢失其他字段
db.class_1.update({'name': 'follow__my_heart'}, {'name': 'follow__your_heart'})
保留其他字段
db.class_1.update({'name': 'follow__my_heart'}, {$set: {'name': 'follow__your_heart'}})
数据批量更新
db.class_1.update({'name': 'follow__my_heart'}, {$set: {'name': 'follow__your_heart'}}, {multi: true})

数据删除

数据删除一条
db.class_1.remove({'name': 'follow__your_heart'}, {justOne: true})
数据批量删除
db.class_1.remove({'name': 'follow__my_heart'})

数据查询

创建数据集合
use book_managerdb.getCollection('person_info').insert({name: '郭靖',hometown: '蒙古',age: 20,gender: true
})
db.getCollection('person_info').insert({name: '黄蓉',hometown: '桃花岛',age: 18,gender: false
})
db.getCollection('person_info').insert({name: '华筝',hometown: '蒙古',age: 18,gender: false
})
db.getCollection('person_info').insert({name: '黄药师',hometown: '桃花岛',age: 40,gender: true
})
db.getCollection('person_info').insert({name: '段誉',hometown: '大理',age: 16,gender: true
})
db.getCollection('person_info').insert({name: '段王爷',hometown: '大理',age: 45,gender: true
})
db.getCollection('person_info').insert({name: '洪七公',hometown: '华山',age: 18,gender: true
})use book_shopdb.getCollection('product_info').insert({_id: 100,sku: 'abc123',description: 'Single line description'
})
db.getCollection('product_info').insert({_id: 101,sku: 'abc456',description: 'First line\nSecond line'
})
db.getCollection('product_info').insert({_id: 102,sku: 'abc789',description: 'Single line description'
})
db.getCollection('product_info').insert({_id: 103,sku: 'xyz123',description: 'Many lines description'
})
db.getCollection('product_info').insert({_id: 104,sku: 'xyz456',description: 'Many lines description'
})
数据查询一条
db.person_info.findOne({'age': 18})
查询格式化输出
  • 在终端中使用
db.person_info.find().pretty()
运算符
比较运算符
db.person_info.find({age: {$gte: 18}})
范围运算符
db.person_info.find({age: {$in: [18, 45]}})
逻辑运算符
db.person_info.find({$or: [{'age': 18}, {'hometown': '桃花岛'}]})
正则表达式查询
db.product_info.find({sku: /^abc/})
db.product_info.find({sku: {$regex: '^abc'}})
分页
查询前两条数据
db.product_info.find().limit(2)
略过前两条数据
db.product_info.find().skip(2)
自定义查询
db.person_info.find({$where: function () {return this.age <= 18;}
})
投影
db.person_info.find({age: {$gte: 18}}, {'name': 1, _id: 0})
排序
db.person_info.find().sort({'age': -1})
统计
db.person_info.count({'age': {$gte: 18}})
去重
db.person_info.distinct('hometown', {'age': {$gte: 18}})
聚合操作
$group
按指定字段分组
db.person_info.aggregate({$group: {_id: '$gender', count: {$sum: 1}, avg_age: {$avg: '$age'}}
})
  • {$sum: 1}中的1表示倍数
不进行分组
db.person_info.aggregate({$group: {_id: null, count: {$sum: 1}, avg_age: {$avg: '$age'}}
})
$project
投影
db.person_info.aggregate({$project: {_id: 0, name: 1, age: 1}
})
别名
db.person_info.aggregate({$group: {_id: '$gender', count: {$sum: 1}, avg_age: {$avg: '$age'}}},{$project: {"性别": '$_id', "人数": '$count', "平均年龄": '$avg_age', _id: 0}}
)
$match
db.person_info.aggregate({$match: {age: {$gt: 20}}},{$group: {_id: '$gender', count: {$sum: 1}}},{$project: {"性别": '$_id', "人数": '$count', _id: 0}}
)
$sort
db.person_info.aggregate({$group: {_id: '$gender', count: {$sum: 1}}},{$sort: {count: -1}}
)
$limit
db.person_info.aggregate({$limit: 2}
)
$skip
db.person_info.aggregate({$skip: 2}
)


http://www.mrgr.cn/p/03546483

相关文章

Java面向对象03——三大特性之继承

一、继承(extends) 1.1、继承是什么 继承就是 Java 允许我们用 extends 关键字,让一个类与另一个类建立起一种父子关系; 被继承的类称为父类(基类、超类),继承父类的类都称为子类(派生类) ,当子类继承父类后,就可以直接使用父类公共的属性和方法了 当子类继承父类后…

使用 Docker 部署 Nuxt.js 应用程序

来源:https://medium.com/@jkpeyi/deploying-a-nuxt-js-application-with-docker-69bf822c066dWhen developing a Nuxt.js application, it’s essential to be able to deploy it easily and reproducibly. In this article, we will explore how to use Docker to deploy a …

Rust中的函数指针

什么是函数指针 通过函数指针允许我们使用函数作为另一个函数的参数。函数的类型是 fn &#xff08;使用小写的 ”f” &#xff09;以免与 Fn 闭包 trait 相混淆。fn 被称为 函数指针&#xff08;function pointer&#xff09;。指定参数为函数指针的语法类似于闭包。 函数指…

Rabbitmq系列02---Exchange

个人理解: 交换机的类型划分个人理解是能过routing key来划分的,一是否按routing key找队列;fanout就是不按routingkey找队列,Direct和Topicr按routingkey找队列,只是一个模糊找,一个精准找,而headers不按routingkey 是按消头中的内容找队列。 一、Fanout(订阅模式|广播…

python之List列表

1. 高级数据类型 Python中的数据类型可以分为&#xff1a;数字型&#xff08;基本数据类型&#xff09;和非数字型&#xff08;高级数据类型&#xff09; 数字型包含&#xff1a;整型int、浮点型float、布尔型bool、复数型complex 非数字型包含&#xff1a;字符串str、列表l…

陈畅亮搞的专利在Windows上利用加解密DLL模块对数据库连接字符串进行加解密

陈畅亮搞的专利在Windows上利用加解密DLL模块对数据库连接字符串进行加解密这种专利权人是公司,个人是发明人,专利年费是申请人先垫付,然后公司报销了,这个专利本身就不属于员工的这个是公司是专利权人, 使用权是公司 , 如果想要维持权利的话 ,需要缴纳年费 ,专利发明…

[最新]CentOS7设置开机自启动Hadoop集群

安装好Hadoop后我们可以使用开机自启动的方式&#xff0c;节约敲命令的时间。注意是centOS7版本!!!和centOS6版本区别非常大!!! 1、切换到系统目录 [rootmaster ~]# cd /etc/systemd [rootmaster systemd]# ll total 32 -rw-r--r-- 1 root root 720 Jun 30 23:11 bootcha…

19-项目干系人管理(10/10 十大管理)

17.1 管理基础 17.1.1 管理的重要性 每个项目干系人,他们会受到项目积极或消极的影响,或者能对项目施加积极或消极的影响。项目经理和团队管理干系人的能力决定着项目的成败。为提高项目成功的概率,尽早开始识别干系人并引导干系人参与。 干系人满意度应作为项目目标加以识别…

基于Springboot的考研资讯平台

基于SpringbootVue的考研资讯平台的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页 考研资讯 报考指南 资料信息 论坛信息 后台登录 考研资讯管理 学生管理 资…

滴水逆向 FileBuffer-ImageBuffer 课后作业

1)- 实现如下功能 #include<stdio.h> #include<stdlib.h> #include<windows.h> BYTE* bufferApply nullptr;//将磁盘文件复制到内存中后, 使用bufferApply指向该空间 DWORD fileSize 0;//将磁盘文件复制到内存时使用需要申请空间, 使用fileSize设置申请空…

17-项目风险管理(8/10 十大管理)

15.1 管理基础 15.1.1 项目风险概述 项目风险是一种不确定的事件或条件,一旦发生,会对项目目标产生某种正面或负面的影响。项目风险既包括对项目目标的威胁,也包括促进项目目标的机会。 风险源于所有项目之中的不确定因素。项目在不同阶段会有不同的风险。风险会随着项目的进…

18-项目采购管理(9/10 十大管理)

16.1 管理基础 16.1.1 协议/采购合同 项目采购管理包括从项目团队外部采购或获取所需产品、服务或成果的各个过程。例如合同、订购单、协议备忘录(MOA)和服务水平协议(SLA)。被授权采购项目所需货物、服务的人员可以是项目团队、管理层或组织采购部的成员。 因应用领域不同…

URL路由基础与Django处理请求的过程分析

1. URL路由基础 对于高质量的Web应用来讲&#xff0c;使用简洁、优雅的URL设计模式非常有必要。Django框架允许设计人员自由地设计URL模式&#xff0c;而不用受到框架本身的约束。对于URL路由来讲&#xff0c;其主要实现了Web服务的入口。用户通过浏览器发送过来的任何请求&am…

15-项目沟通管理(7/10 十大管理)

14.1 管理基础 14.1.1 沟通 沟通是指用各种可能的方式来发送或接收信息。具体形式包括:书面行驶、口头形式、正式或非正式、手势动作、媒体行驶、遣词造句。 14.1.2 沟通模型 关键要素包括:编码:把思想或想法转化为他人能理解的语言 信息和反馈信息 媒介 噪声 解码:把信息还…

与 Apollo 共创生态:Apollo 七周年大会给带来的震撼

文章目录 一、七年蛰伏&#xff0c;Apollo 迎来“智变”时刻二、Apollo 企业生态计划与开放平台2.1 Apollo X 企业自动驾驶解决方案2.2 Apollo 开放平台携手伙伴共创生态 三、个人感悟 一、七年蛰伏&#xff0c;Apollo 迎来“智变”时刻 让我们把时间倒回到 2013 年&#xff0…

13-项目质量管理(5/10 十大管理)

12.1 管理基础 12.1.1 质量与项目质量 1.质量 国际标准定义:反映实体满足主体明确和隐含需求的能力的特性总和。 国家标准定义:一组固有特性满足要求的程度。 质量通常是指产品的质量,广义上的质量还包括工作质量。质量与等级是两个不同的概念。 质量作为实现的性能或成果;…

11-项目进度管理(3/10 十大管理)

10.1 管理基础 10.1.1 项目进度计划的定义和总要求 项目进度计划是一种用于沟通和管理干系人期望的工具,为绩效报告提供依据。 编制进度计划一般步骤:首先选择进度计划方法,例如关键路径法;然后将项目特定数据,如活动、计划日期、持续时间、资源、依赖关系和制约因素等输入…

12-项目成本管理(4/10 十大管理)

11.1 管理基础 11.1.1 重要性和意义 项目成本管理重点关注完成项目活动所需资源的成本,但同时也考虑项目决策对项目产品、服务或成果的使用成本、维护成本和支持成本的影响。项目成本管理应考虑干系人对成本的要求,不同的干系人会在不同的时间,用不同的方法测算项目成本。 对…

ThingsBoard服务端使用RPC通过网关给设备发送消息

一、概述 1、发送服务器端网关RPC 二、案例&#xff1a; 1、建立设备与网关之间的通讯 2、查看设备和网关是否在线状态啊 3、通过 仪表盘&#xff0c;创建设备A的模拟RPC调用的窗口链接 4、在客户端的网关设备上订阅RPC网关的主题信息 5、通过服务端的窗口&#xff0c;发…

10-项目范围管理(2/10 十大管理)

9.1 管理基础 9.1.1 产品范围和项目范围产品范围:指某项产品、服务或成果所具有的特征和功能。产品范围的完成情况是根据产品需求来衡量的。 项目范围:包括产品范围,是为交付具有规定特性与功能的产品服务或成果而必须完成的工作。项目范围的完成情况是根据项目管理计划来衡…