当前位置: 首页 > news >正文

MongoDB--》基本常用命令使用

目录

数据库操作命令

选择和创建数据库

数据库的删除

集合操作命令

集合的显示创建

集合的隐式创建

集合的删除

文档基本的CRUD(增删改查)

文档的插入

文档的基本查询

文档的更新

删除文档


数据库操作命令

数据库常用的操作命令如下:

选择和创建数据库

选择和创建数据库的语法格式为:use 数据库名称,如果数据库不存在则自动创建,如下:

// 选择 admin 数据库,如果admin数据库不存在则自动创建
use admin

数据库的命令规范

数据库名可以是满足以下条件的任意UTF-8字符串

1)不能是空字符串(""")。
2)不得含有 ' ' (空格)、. 、$ 、/ 、\ 和\0 (空字符)。

2)应全部小写。
4)最多64字节。

有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库
admin:从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
local:这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
config:当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

查看 “有权限查看的” 所有的数据库 的命令

show dbs 
或
show databases

举例如下:可以看到我们创建的admin1数据库并没有和MongoDB本身存在的数据库并列,下面只是显示我们切换到了admin1数据库而已,这是什么原因呢?

原来,MongoDB数据库的机制是,当我们创建数据库而并没有给其赋予集合内容时,该数据库就只会存储在内存当中而不会存储到磁盘中,这也就是导致我们虽然创建了数据库但是并没有显示的原因。说白了:你不给我数据我就不显示。

查看当前正在使用的数据库命令

db

虽然我们创建的数据库并没有赋予其内容,但其也是真实存在的,如下:

数据库的删除

数据库的删除命令(主要用来删除已经持久化的数据库)

// db代表当前正在使用的数据库
db.dropDatabase()

集合操作命令

集合类似于关系数据库中的表,可以显示的创建也可以隐式的创建,其相关命令如下:

集合的显示创建

集合的显示创建命令

// name: 要创建的集合名称
db.createCollection(name)

集合的命名规范

集合名不能是空字符串""。
集合名不能含有 \0字符(空字符),这个字符表示集合名的结尾。

集合名不能以 "system." 开头,这是为系统集合保留的前缀。

用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面包含,这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创建的集合,否则千万不要在名字里出现$。

查看当前库中的表的命令

show collections
或
show tables

集合的隐式创建

集合的隐式创建命令

当向一个集合中插入一个文档的时候,如何集合不存在,则会自动创建集合,通常我们使用隐式创建文档即可。

集合的删除

集合的删除命令(如果成功删除指定集合,drop()方法返回true,否则返回false)

db.collection.drop()
或
db.集合.drop()

注意:在MongoDB中,集合只有在内容插入后才会创建!也就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

文档基本的CRUD(增删改查)

文档 (document) 的数据结构和JSON基本一样,所有存储在集合中的数据都是BSON格式。

文档的插入

单个文档的插入:使用 insert() 或 save() 方法向集合中插入文档,其基本语法如下:

db.collection.insert(<document or array of documents>,{writeConcern: <documents>,ordered: <boolean>}
)

document:document or array 要插入到集合中的文档或文档数组(json格式)

writeConcern:document,表达书面关注的文档。

ordered:可选,为真则按顺序插入数组中的文档,为假则执行无须插入。

示例如下:(显示插入成功)

多个文档的插入:使用 insertMany() 方法向集合中插入文档,其基本语法如下:

db.collection.insertMany(<document or array of documents>,{writeConcern: <documents>,ordered: <boolean>}
)

插入异常捕获使用 try catch :如果某条数据插入失败,将会终止插入,但已经插入成功的数据不会回滚掉。因为批量插入由于数据较多容易出现失败,因此,可以使用try catch进行异常捕捉处理,测试的时候可以不处理。如下:

注意

1)comment集合如果不存在,则会隐式创建。
2)mongo中的数字,默认情况下是double类型,如果要存整型,必须使用函数NumberInt(整型数字),否则取出来就有问题了。
3)插入当前日期使用new Date()。
4)插入的数据没有指定_id,会自动生成主键值。
5)如果某字段没值,可以赋值为null,或不写该字段。

文档的基本查询

查询数据的命令如下:

db.collection.find(<query>,[projection])
ParameterTypeDescription
querydocument可选。使用查询运算符指定选择筛选器
projectiondocument可选。指定要在与查询筛选器匹配的文档中返回的字段。

如果想查询符合条件的数据,可以通过以下方式完成:

如果想查询返回符合条件的第一条数据,可以通过以下方式:

如果想查询结果返回部分字段,则需要使用投影查询(不显示所有字段,只显示指定字段)

文档的更新

更新文档的语法如下:

db.collection.update(query, update, options)
或
db.collection.update(<query>,<update>,{upsert:<boolean>,multi:<boolean>,writeConcern:<document>,collation:<document>,arrayFilters:[<filterdocument1>,...],hint:<document|string>}
)
ParameterTypeDescription
querydocument更新的选择条件
updatedocument or pipeline要应用的修改
upsertboolean可选,true为没有查询条件自动创建文档,false则不会插入新文档
multifboolean可选,true更新符合查询条件的多个文档,false则更新一个文档
writeConcerndocument可选,表示写问题的文档,抛出异常的级别
collationdocument可选,指定要用于操作的校对规则
arrayFiltersarray可选,用于确定要为数组字段上的更新操作修改哪些数据元素
hintdocument or string可选,指定用于支持查询谓词的索引的文档或字符串

覆盖修改:如果想覆盖修改可以执行以下命令:

局部修改:为了解决上面的问题,我们需要使用修改器 $set 来实现,命令如下:

批量修改:更新所有自己设置条件的数据,如果不加后面的参数,则只能更新符合条件的第一条数据,命令如下:

列值增长的修改:如果我们想实现对某列值在原有值的基础上进行增加或减少,可使用 $inc 运算符来实现,命令如下:

删除文档

删除文档的语法结构如下:

db.集合名称.remove(条件)

如果想删除所有数据,可以执行以下命令:

相关文章:

MongoDB--》基本常用命令使用

目录 数据库操作命令 选择和创建数据库 数据库的删除 集合操作命令 集合的显示创建 集合的隐式创建 集合的删除 文档基本的CRUD&#xff08;增删改查&#xff09; 文档的插入 文档的基本查询 文档的更新 删除文档 数据库操作命令 数据库常用的操作命令如下&#x…...

js浮点数四则运算精度丢失以及toFixed()精度丢失解决方法

js浮点数四则运算精度丢失以及tofixed精度丢失解决方法一、js浮点数计算精度丢失的一些例子1、四则运算精度丢失&#xff1a;2、toFixed() 四舍五入精度丢失&#xff1a;二、浮点数计算精度丢失的原因三、解决办法1、使用 big.js&#xff08;如果有大量连续的计算推荐使用&…...

高姿态下的面部表情识别系统

效果展示&#xff1a; python表情、性别识别面部表情识别 (FER) 在计算机安全、神经科学、心理学和工程学方面有大量应用。由于其非侵入性&#xff0c;它被认为是打击犯罪的有用技术。然而&#xff0c;FER 面临着几个挑战&#xff0c;其中最严重的是它在严重的头部姿势下的预测…...

English Learning - Day59 作业打卡 2023.2.13 周一

English Learning - Day59 作业打卡 2023.2.13 周一引言1. 我有一些急事要处理。2. 这个孩子无忧无虑。3. 那个骑在白马上的姑娘是我姐姐。4. 对方正在给我们公司施加压力迫使我们降价。5. 我的医生告诉我要少吃垃圾食品。6. 我从来不熬夜。7.我早就想跟你聊一聊了。8.我一定不…...

图机器学习

图机器学习1、图机器学习导论1.1图神经网络与普通神经网络的异同2、图的基本表示和特征工程2.1 图的基本表示2.1.1 图的本体设计2.1.2 图的种类2.1.3节点连接数&#xff08;度&#xff09;2.1.4图的基本表示&#xff08;邻接矩阵&#xff09;节点数量少使用2.1.5图的基本表示&a…...

ArcGIS中ArcMap创建渔网Create Fishnet:生成指定大小的格网矢量文件

本文介绍在ArcMap软件中&#xff0c;通过“Create Fishnet”工具创建渔网&#xff0c;从而获得指定大小的矢量格网数据的方法。 首先&#xff0c;我们在创建渔网前&#xff0c;需要指定渔网覆盖的范围。这里我们就以四川省为例&#xff0c;在这一范围内创建渔网&#xff1b;其中…...

TensorRT中的自定义层

TensorRT中的自定义层 文章目录TensorRT中的自定义层9.1. Adding Custom Layers Using The C API9.1.1. Example: Adding A Custom Layer With Dynamic Shape Support Using C重要提示&#xff1a;覆盖检查索引小于pos的连接的格式/类型&#xff0c;但绝不能检查索引大于pos的连…...

部署智能合约到公链

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 &#x1f3c5;阿里云ACE认证高级工程师 &#x1f3c5;阿里云开发者社区专…...

Windows server——部署DNS服务(3)

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.管理DNS服务 1.子域 案例 2. 委派 案例 1&#xff09;添加主机记录 …...

9. QML_OpenGL--2. 在QQuick中搭建加载OpenGL框架

1. 说明&#xff1a; OPenGL一般在 QtWidget 中使用&#xff0c;但目前使用 QML 做界面开发是一种趋势&#xff0c;同时在QML中使用OPenGL进行渲染也是十分必要&#xff0c;文章简单介绍如何在QML中使用 OPenGL&#xff0c;搭建了一种基本的框架。整体思路和在 QtWidget 中类似…...

亚马逊云科技携手滴普科技,打造数据智能新标杆

随着企业数字化转型的不断深入&#xff0c;数据对于业务的价值和重要性也逐渐凸显。越来越多企业意识到&#xff0c;只有不断提升底层数据基础平台的性能和能力&#xff0c;才能构建数据驱动的业务&#xff0c;增强企业核心竞争力。作为湖仓一体数据智能基础软件独角兽企业&…...

CGO 跨平台静态编译

什么是跨平台编译&#xff1f; 跨平台编译&#xff1a;即交叉编译&#xff0c;是在一个平台上生成另一个平台上的可执行文件。所谓平台&#xff0c;实际上包含两个概念&#xff1a;体系架构(Architecture)、操作系统 (Operating System&#xff09;。同一个体系架构可以运行不同…...

股票买卖接口怎么来的?

现在股票买卖接口主要是在线上研发&#xff0c;有专业的开发团队进行源码开发和完善&#xff0c;但是&#xff0c;常常会在开发过程中出现问题&#xff0c;也就是遇到一些特殊的情况需要及时处理&#xff0c;那么股票买卖接口怎么开发实现出来的&#xff1f;一、股票买卖接口开…...

【Python学习笔记】29.Python3 面向对象

前言 Python从设计之初就已经是一门面向对象的语言&#xff0c;正因为如此&#xff0c;在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。 Python3 面向对象 如果你以前没有接触过面向对象的编程语言&#xff0c;那你可能需要先了解一些面…...

MySQL 索引

索引 索引是一种用于快速查询和检查数据的数据结构&#xff0c;其本质可以看成是一种排好序的数据结构。理解&#xff1a;索引的作用就相当于书的目录&#x1f4da;&#xff0c;可以根据目录快速定位到想要查看的位置。常见的索引结构&#xff1a;B Tree、B Tree、Hash、红黑树…...

学会使用LoadRunner录制脚本

1.LoadRunner安装 https://blog.csdn.net/weixin_48584088/article/details/129012469 2.Loadrunner的基本概念 LoadRunner是一种适用于许多软件体系架构的自动负载测试工具&#xff0c;从用户关注的响应时间、吞吐量&#xff0c; 并发用户和性能计数器等方面来衡量系统的性…...

产品经理必看的高效产品文档撰写指南

对于企业来说&#xff0c;如何推广自己的产品是一个非常重要的话题&#xff0c;而其中必要的就是创建企业产品宣传册&#xff0c;这对于产品宣传非常重要&#xff0c;尤其是一些大公司&#xff0c;非常重视这种产品展示方式。因为它可以更完整地展现产品&#xff0c;撰写一份合…...

Prometheus 的介绍和安装

介绍 Prometheus 是一个开源的监控和报警系统,最初由SoundCloud于2012年创建,随着越来越多的公司采用Prometheus以及非常活跃的社区,Prometheus于2016年加入云原生基金会,成为Kubernetes之后的第二个托管项目,并于2018年毕业。 特点 通过PromQL来对基于指标名称和键值对…...

ViewModel快速上手1-原生kotlin

ViewModel 原生支持 kotlin 案例 基本案例 viewmodel 是为了保存当当前 activity 切出或者销毁时&#xff0c;如何保存数据&#xff0c;以便下一次创建新的 activity 时进行调用 首先引入 lifecycle 依赖 implementation androidx.lifecycle:lifecycle-extensions:2.2.0 之后…...

Flutter(一)介绍、Dart语言简介

Flutter介绍 纯原生开发主要面临动态化更新和开发成本两个问题&#xff0c;而针对这两个问题&#xff0c;诞生了一些跨平台的动态化框架 跨平台技术简介 Flutter 是 Google 推出并开源的移动应用开发框架&#xff0c;主打跨平台、高保真、高性能。开发者可以通过 Dart 语言开…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...