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])
Parameter | Type | Description |
---|---|---|
query | document | 可选。使用查询运算符指定选择筛选器 |
projection | document | 可选。指定要在与查询筛选器匹配的文档中返回的字段。 |
如果想查询符合条件的数据,可以通过以下方式完成:
如果想查询返回符合条件的第一条数据,可以通过以下方式:
如果想查询结果返回部分字段,则需要使用投影查询(不显示所有字段,只显示指定字段)
文档的更新
更新文档的语法如下:
db.collection.update(query, update, options)
或
db.collection.update(<query>,<update>,{upsert:<boolean>,multi:<boolean>,writeConcern:<document>,collation:<document>,arrayFilters:[<filterdocument1>,...],hint:<document|string>}
)
Parameter | Type | Description |
---|---|---|
query | document | 更新的选择条件 |
update | document or pipeline | 要应用的修改 |
upsert | boolean | 可选,true为没有查询条件自动创建文档,false则不会插入新文档 |
multif | boolean | 可选,true更新符合查询条件的多个文档,false则更新一个文档 |
writeConcern | document | 可选,表示写问题的文档,抛出异常的级别 |
collation | document | 可选,指定要用于操作的校对规则 |
arrayFilters | array | 可选,用于确定要为数组字段上的更新操作修改哪些数据元素 |
hint | document or string | 可选,指定用于支持查询谓词的索引的文档或字符串 |
覆盖修改:如果想覆盖修改可以执行以下命令:
局部修改:为了解决上面的问题,我们需要使用修改器 $set 来实现,命令如下:
批量修改:更新所有自己设置条件的数据,如果不加后面的参数,则只能更新符合条件的第一条数据,命令如下:
列值增长的修改:如果我们想实现对某列值在原有值的基础上进行增加或减少,可使用 $inc 运算符来实现,命令如下:
删除文档
删除文档的语法结构如下:
db.集合名称.remove(条件)
如果想删除所有数据,可以执行以下命令:
相关文章:

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

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

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

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节点连接数(度)2.1.4图的基本表示(邻接矩阵)节点数量少使用2.1.5图的基本表示&a…...

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

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重要提示:覆盖检查索引小于pos的连接的格式/类型,但绝不能检查索引大于pos的连…...

部署智能合约到公链
🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专…...

Windows server——部署DNS服务(3)
作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页 目录 前言 一.管理DNS服务 1.子域 案例 2. 委派 案例 1)添加主机记录 …...

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

亚马逊云科技携手滴普科技,打造数据智能新标杆
随着企业数字化转型的不断深入,数据对于业务的价值和重要性也逐渐凸显。越来越多企业意识到,只有不断提升底层数据基础平台的性能和能力,才能构建数据驱动的业务,增强企业核心竞争力。作为湖仓一体数据智能基础软件独角兽企业&…...

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

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

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

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

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

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

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

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

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

【数据结构】---顺序表的实现
最近学校开始学习数据结构了,没事就手搓一个顺序表。🌈线性表线性表是n个具有相同特性的数据元素的有限序列,是一种实际中广泛使用的数据结构,常见的线性表有顺序表、链表、栈、队列、字符串。线性表在逻辑上是线性结构࿰…...

JavaScript刷LeetCode拿offer-经典高频40题vaScript刷LeetCode拿offer-经典高频40题
工作太忙没有时间刷算法题,面试的时候好心虚。这里双手奉上40道LeetCode上经典面试算法题,整理的内容有点长,建议先收藏,慢慢消化,在来年顺利拿到满意的offer。 1、[LeetCode] 两数之和 给定一个整数数组和一个目标值…...

动态规划,这将是你见过最详细的讲解
文章目录一、为什么要讲动态规划呢?二、什么是动态规划三、感受一下递归算法、备忘录算法、动态规划递归算法带备忘录的递归解法(自定向下)自底向上的动态规划四、动态规划的解题套路1. 穷举分析2. 确定边界3. 确定最优子结构4. 写出状态转移…...

【服务器数据恢复】FreeNAS层UFS2文件系统数据恢复案例
服务器数据恢复环境: Dell存储服务器,采用esxi虚拟化系统,esxi虚拟化系统里有3台虚拟机;上层iSCSI使用FreeNAS构建,通过iSCSI方式实现FCSAN功能;FreeNAS层采用UFS2文件系统。 esxi虚拟化系统里有3台虚拟机中…...

Zookeeper安装和基本使用
目录标题一、下载二、安装三、启动客户端测试四、使用zk一、下载 注意:自zk3.5.5版本以后,已编译的jar包,尾部有bin,应该使用的是apache-zookeeper-3.8.0-bin.tar.gz。,因此在下载高版本时,因该下载后缀带b…...

字节面试惨败,闭关修炼再战美团(Android 面经~)
作者:王旭 前言 本人从事Android 开发已经有5年了,受末日寒气影响,被迫在家休整,事后第一家选择字节跳动面试,无奈的被面试官虐得“体无完肤”,好在自己并未气馁,于是回家开始回家进行闭关修炼…...

【机器学习实战】七、梯度下降
梯度下降 一、线性回归 线性回归算法推导过程可以基于最小二乘法直接求解,但这并不是机器学习的思想,由此引入了梯度下降方法。本文讲解其中每一步流程与实验对比分析。 1.初始化 import numpy as np import os %matplotlib inline import matplotli…...

什么是极速文件传输,极速文件传输如何进行大文件传输
当谈到大文件传输时,人们总是担心大数据文件的大小以及将它们从一个位置交换到另一个位置需要多长时间。由于数据捕获高分辨率视频和图像的日益复杂,文件的大小不断增加。数据工作流在地理上变得越来越分散。在一个位置生成的文件在其他位置处理或使用。…...

Spring Boot 日志
目录 1.概述 2.切换日志实现 3.使用 3.1.日志级别 3.3.日志离线 3.4.详细定制 1.概述 由一些历史原因,JAVA领域存在有很多日志框架,如Log4j、Logback、log4j2。 log4j是Java日志框架的元老,在log4j被Apache Foundation收入门下之后&a…...

好用的研发管理看板工具有哪些?10款主流看板管理软件盘点
10大企业看板工具软件:1.软件开发项目看板 PingCode;2.通用看板软件 Worktile;3.开源看板软件 Wekan;4.免费看板软件 Trello;5.个人和小团队的看板软件 Todoist ;6.开源免费看 Kanboard;7.面向个…...