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

news2024/12/23 10:38:20

目录

数据库操作命令

选择和创建数据库

数据库的删除

集合操作命令

集合的显示创建

集合的隐式创建

集合的删除

文档基本的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(条件)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/342505.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker基础和使用(一)

Docker 入门篇 文章目录Docker 入门篇一、docker简介1.1、docker说明&#xff1a;1.2、docker镜像说明&#xff1a;1.2.1、UnionFS&#xff08;联合文件系统&#xff09;1.2.2、docker镜像分成的好处1.2.3、docker平台架构图二、docker的常用命令1.1、手册查询1.2、docker启停和…

知识图谱业务落地技术推荐之图数据库汇总

0.图数据库排名 链接:https://db-engines.com/en/ranking/graph+dbms 0.1简要分析(各种图数据库属性) Neo4j(主流) 历史悠久且

备考蓝桥杯【快速排序和归并排序】

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…

【王道数据结构】第八章 | 排序

目录 8.1. 排序的基本概念 8.2. 插入排序 8.2.1. 直接插入排序 8.2.2. 折半插入排序 8.2.3. 希尔排序 8.3. 交换排序 8.3.1. 冒泡排序 8.3.2. 快速排序 8.4. 选择排序 8.4.1. 简单选择排序 8.4.2. 堆排序 8.5. 归并排序和基数排序 8.5.2. 基数排序 8.1. 排序的基本概念 排…

3-track网络预测蛋白质结构和相互作用

目录引言网络架构发展直接生成蛋白-蛋白复合物DeepMind在最近的CASP14上展示了非常准确的预测。作者探索了融合相关思想的网络架构&#xff0c;并通过对一维序列级、二维距离图级&#xff08;distance map&#xff09;和三维坐标级&#xff08;coordinate&#xff09;的信息依次…

机械设备管理软件如何选择?机械设备管理软件哪家好?

随着信息化技术的进步与智能制造的发展趋势&#xff0c;很多机械设备制造企业也在一直探寻适合自己的数字化管理转型之路&#xff0c;而企业上ERP管理软件又是实现数字化管理的前提&#xff0c;机械设备管理软件对于企业来说就是关键一环。机械设备管理软件如何选择&#xff1f…

IPV4地址的原理和配置

第三章&#xff1a;IP地址的配置 IPv4&#xff08;Internet Protocol Version 4&#xff09;协议族是TCP/IP协议族中最为核心的协议族。它工作在TCP/IP协议栈的网络层&#xff0c;该层与OSI参考模型的网络层相对应。网络层提供了无连接数据传输服务&#xff0c;即网络在发送分…

【GD32F427开发板试用】7. 移植LVGL到GD32F427V

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;hehung 之前发帖 【GD32F427开发板试用】1. 串口实现scanf输入控制LED 【GD32F427开发板试用】2. RT-Thread标准版移植 【GD32F427开发板试用…

TypeScript快速入门———(一)TypeScript 介绍以及初体验

文章目录1. TypeScript 介绍1.1 TypeScript 是什么1.2 TypeScript 为什么要为 JS 添加类型支持&#xff1f;1.3 TypeScript 相比 JS 的优势2. TypeScript 初体验2.1 安装编译 TS 的工具包2.2 编译并运行 TS 代码2.3 简化运行 TS 的步骤1. TypeScript 介绍 1.1 TypeScript 是什…

[python入门㊺] - 异常中的finally

目录 ❤ finally的作用 ❤ try、except、finally的执行顺序是什么 ❤ 案列 finally 中不带return finally中有return ❤ finally的作用 finally内的代码不管有无异常发生&#xff0c;都会执行。具体来说&#xff1a; 无论是否发生了异常&#xff0c;一定会执行 fi…

若依-pro使用

前言 最近开始搞一个项目&#xff0c;使用的框架是若依-pro。新手上路&#xff0c;多多指教。 首先了解一下什么是若依&#xff0c;其实他就是将很多项目共同的代码进行了抽取&#xff0c;方便我们可以快速开发的一个javaweb项目&#xff08;若依是一个项目&#xff0c;一个p…

中睿天下Coremail联合发布《2022年第四季度企业邮箱安全报告》(附下载)

近日&#xff0c;中睿天下联合CAC邮件安全大数据中心&#xff08;以下简称CAC中心&#xff09;发布《2022年第四季度企业邮箱安全报告》&#xff0c;对当前企业邮箱的应用状况和安全风险进行了分析。1.垃圾邮件同比下降22.16%日前&#xff0c;CAC&#xff08;Coremail Anti Spa…

test3

数据链路层故障分析 一、网桥故障 a.主要用途简述 网桥作为一种桥接器&#xff0c;可以连接两个局域网。工作在数据链路层&#xff0c;是早期的两端口二层网络设备。可将一个大的VLAN分割为多个网段&#xff0c;或者将两个以上的LAN互联为一个逻辑LAN&#xff0c;使得LAN上的…

互联网舆情监测系统困境及措施,TOOM舆情监控平台应对及处置?

互联网舆情监测系统帮助政府、企业、媒体等机构了解公众的需求和诉求&#xff0c;及时发现和解决问题&#xff0c;防范和化解不良舆情&#xff0c;提高公众满意度和信任度。互联网舆情监测的技术手段包括爬虫、文本挖掘、情感分析、网络图谱等&#xff0c;互联网舆情监测系统困…

UE4 使用AE跟踪相机数据,演算任意视频的相机运动数据

参考链接 ae 3dsmax 摄像机互导 aehj 虚幻引擎5使用AE跟踪相机数据 一、软件版本&#xff1a;试过好几个版本&#xff0c;目前只有两组版本成功过 3dmax2016 AE2014 3dmax2020 AE2022 二、程序安装&#xff08;执行exe和手动拷贝是相同的&#xff09; 参考链接 重启AE后如…

工作记录------PostMan自测文件导入、导出功能

工作记录------PostMan自测文件导入、导出功能 测试文件导出 背景&#xff1a;写了一个文件下载功能&#xff0c;是数据写到excel中&#xff0c;下载&#xff0c;使用PostMan点击send后&#xff0c;返回报文是乱码。 解决办法&#xff1a; 点击send下面的 send and Downlo…

python学习之pandas库的使用总结

【1】读取CSV并进行透视 我们的原始数据格式&#xff1a; ① 读取数据 pd.read_csv 会读取csv表格并使用names指定读取后的列名称。 import pandas as pdreleaseNumOfYear pd.read_csv("data/releaseNumOfYear.csv", headerNone, names[Year, Genre, ReleaseNum]…

各种音频接口比较

时间 参考&#xff1a;https://www.bilibili.com/video/BV1SL4y1q7GZ/?spm_id_from333.337.search-card.all.click&vd_source00bd76f9d6dc090461cddd9f0deb2d51&#xff0c; https://blog.csdn.net/weixin_43794311/article/details/128941346 接口名字时间公司支持格式…

springcloud - 2021.0.3版本 - (一)服务注册nacos+feign

一&#xff0c;注册中心 最新版使用的是nacos&#xff0c;可替换为eureka&#xff0c;zookeeper&#xff0c;使用方式大同小异&#xff0c;这里不做扩展。 下载安装&#xff1a;&#xff08;有机会重装时再补上&#xff09; 管理页面&#xff1a;http://localhost:8848/naco…

RabbitMQ详解(二):Docker安装RabbitMQ

在Docker上安装部署RabbitMQ方便快捷&#xff0c;不需要额外安装Erlang环境&#xff0c;所以写该篇文章先来介绍如何在Docker上部署RabbitMQ。 一、安装并运行 (1)、在docker hub 中查找rabbitmq镜像 docker search rabbitmq:3.9.12-management带有“mangement”的版本&…