解读MongoDB官方文档获取mongo7.0版本的安装步骤与基本使用
mongo式一款NOSQL数据库,用于存储非结构化数据,mongo是一种用于存储json的数据数据,可以通过mongo提供的命令解析json获取想要的值。
数据模型
了解关系数据库会很熟悉database,table,row,column的概念,分别是数据库,表,行,列所组成的二维表,而在mongo中没有存储的是json,在新的数据模型中主要数据模型有db(数据库),collection(集合),document(文档),field(属性)。

在mongo中一个db数据库存储多个collection;一个collection的结构如下:
// collection
{"userId": 1,"id": 1,"title": "delectus aut autem1","completed": false
}
{"userId": 2,"id": 2,"title": "delectus aut autem2","completed": false
}
而每一个结构就是一个document(文档):
{"userId": 2,"id": 2,"title": "delectus aut autem2","completed": false
}
其中的userId,id等都是field(属性)。
安装
- 主机安装
Ubuntu官方安装文档
依次按照官网的命令执行就可以了

左侧可以选安装版本,尽量别选最新的哈,小编在主机上安装时遇到了一些问题导致主机安装未成功。(推荐使用docker 安装)

安装完之后,还需要安装mongo shell用于与mongo server交互,通过命令行的方式操作数据官方下载地址。
mongo shell docs
如果安装没有修改配置文件使用mongosh会自动连接mongdb://localhost:27017,如果修改了配置文件或者端口使用mongosh "mongodb://localhost:27017"编辑端口即可。

mongo会链接一个默认的数据库。
除了使用mongo shell外还可以使用mongo compass GUI工具,下载地址
mongo compass 内部也集成来mongo sh在左下角

- docker安装
docker pull mongodocker run --name mongo -id -P mongo
使用docker安装看起来要方便很多,安装成功映射到主机端口和mongo shell和mongo compass是一样的。
命令行操作
CURD
通过mongo shell是直接的操作方式,具体的CURD操作如下:
插入
db.collection.insertOne()
db.collection.insertMany()


>除了上述插入方式外还可以借助mongo compass 导入csv等数据。
更新数据

更新有三个参数,分别是过滤器,更新内容,条件
db.inventory.updateOne({ item: "paper" },{$set: { "size.uom": "cm", status: "P" },$currentDate: { lastModified: true }}
)
$set关键字用于更新具体内容,$currentDate 关键字用于把lastModified字段设置为最近修改时间,没有该字段就创建。
第一个参数是条件,可以使用比较计算符。
删除数据

db.inventory.deleteMany({ status : "A" })
删除也是匹配删除。
db.inventory.deleteOne( { status: "D" } )
删除一个。
比较关键字都可以使用。
命令行查找
db.collection.find()
查询所有

inventory是collection名,test是数据库名,_id是每个collecttion的标识。
精确匹配
find内部可以使用{ <field1>: <value1>, ... }表示查询条件。

find会查询所有的
document找出filed匹配的项。{}不使用关键字的情况下就是json数据,该方法就是查询与其一直的数据。
IN查询
db.inventory.find( { status: { $in: [ "A", "D" ] } } )

in可以使用or替换
AND查询

条件一起写就是
and。
比较查询
$lt是<
模糊查询$regex
$regex是like。
$regex: '^p'为前缀查询,^起前后缀作用。
- 阶级查询
当然比较的关键字还有很多,后续会介绍。这里介绍另一种查询方法.,field.nestedField
db.inventory.find( { "size.uom": "in" } )# 等价
db.inventory.find( { size: { w: 21, h: 14, uom: "cm" } } ) # 不好写
这种方式使用多级阶层的查询。
匹配列表
Json的valu也是支持数组的,也需要匹配列表查询。
精确匹配

只能拥有查询的列表元素。
子集匹配$all
db.inventory.find( { tags: { $all: ["gel"] } } )

只要拥有查询条件的列表元素即可,即查询条件是数据的子集。
单元素查询
db.inventory.find( { tags: "red" } )
查询条件没有列表只有一个元素,所有包含该元素的的数据都会被查询出来。
列表过滤查询
# dim_nml类型为[ 10, 15.25 ]
# 查找小于25的
db.inventory.find( { dim_cm: { $gt: 25 } } )# db.inventory.find( { dim_cm: { $gt: 15, $lt: 20 } } )
db.inventory.find( { dim_cm: { $gt: 15, $lt: 20 } } )# $elemMatch关键字用于多条件查询
db.inventory.find( { dim_cm: { $elemMatch: { $gt: 22, $lt: 30 } } } )
在列表中也可以使用比较关键字,用于过滤。
列表索引查询
db.inventory.find( { "dim_cm.1": { $gt: 25 } } )
.1是列表的索引条件,$gt是比较条件
列表长度查询
db.inventory.find( { "tags": { $size: 3 } } )
$size关键字表示列表长度,长度为3的将被查询出来。
列表中json元素查询
db.inventory.insertMany( [{ item: "journal", instock: [ { warehouse: "A", qty: 5 }, { warehouse: "C", qty: 15 } ] },{ item: "notebook", instock: [ { warehouse: "C", qty: 5 } ] },{ item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 15 } ] },{ item: "planner", instock: [ { warehouse: "A", qty: 40 }, { warehouse: "B", qty: 5 } ] },{ item: "postcard", instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);
该数据列表的数据元素也为json。
db.inventory.find( { "instock": { warehouse: "A", qty: 5 } } )
如果列表内部也是json元素,把列表当做一个document处理即可。
指定返回字段查询
直接使用find加条件查询返回所有field。在查询条件后可添加json字段返回指定字段。
db.inventory.find( { status: "A" }, { item: 1, status: 1 } )
甚至可以隐藏掉_id
db.inventory.find( { status: "A" }, { item: 1, status: 1, _id: 0 } )
可以看出
1是显示,0是隐藏。
也可以反着用,排除返回
db.inventory.find( { status: "A" }, { status: 0, instock: 0 } )
多层次结构也要使用.来构造
db.inventory.find( { status: "A" }, { item: 1, status: 1, "size.uom": 1 } )
存在数组的查询也是如此
shell db.inventory.find( { status: "A" }, { item: 1, status: 1, "instock.qty": 1 } )
也可以同时使用比较查询
db.inventory.find( { status: "A" }, { item: 1, status: 1, instock: { $slice: -1 } } )
空值查询
mongo提供了null关键字用于空值查询。
db.inventory.insertMany([{ item: null },
])
空值比较查询
db.inventory.find( { item: { $ne : null } } )
有兴趣的话可以了解下$type和$exists关键字。
官方方法集合
上述只是介绍了一部分常用的方法,更多一步官方方法集合
包含数据库方法,查询,删除,更新等方法。

相关文章:
解读MongoDB官方文档获取mongo7.0版本的安装步骤与基本使用
mongo式一款NOSQL数据库,用于存储非结构化数据,mongo是一种用于存储json的数据数据,可以通过mongo提供的命令解析json获取想要的值。 数据模型 了解关系数据库会很熟悉database,table,row,column的概念,分别是数据库,…...
【数据结构|C语言版】顺序表
前言1. 初步认识数据结构2. 线性表3. 顺序表3.1 顺序表的概念3.1 顺序表的分类3.2 动态顺序表的实现 结语 前言 各位小伙伴大家好!小编来给大家讲解一下数据结构中顺序表的相关知识。 1. 初步认识数据结构 【概念】数据结构是计算机存储、组织数据的⽅式。 数据…...
Unity类银河恶魔城学习记录12-17 p139 In game UI源代码
Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili UI.cs using UnityEngine;public class UI : MonoBehaviour {[SerializeFie…...
MongoDB学习【一】MongoDB简介和部署
MongoDB简介 MongoDB是一种开源的、面向文档的、分布式的NoSQL数据库系统,由C语言编写而成。它的设计目标是为了适应现代Web应用和大数据处理场景的需求,提供高可用性、横向扩展能力和灵活的数据模型。 主要特点: 文档模型: Mon…...
html 引入vue Element ui 的方式
第一种:使用CDN的方式引入 <!--引入 element-ui 的样式,--> <link rel"stylesheet" href"https://unpkg.com/element-ui/lib/theme-chalk/index.css"> <!-- 必须先引入vue, 后使用element-ui --> <…...
曾经备受追捧的海景房,为何如今却没人要了?
独家首发 ------------ 全国多地的海景房如威海乳山、惠州大亚湾、北海银滩等多地的海景房如今大跌也难以卖出,与当初各地对海景房的追捧形成了鲜明对比,为何这些海景房变成如此样子,在于现实与宣传存在着很大的区别。 曾几何时面朝大海鸟语花…...
[docker] 镜像部分补充
[docker] 镜像部分补充 这里补充一下比较少用的,关于镜像的内容 检查镜像 ❯ docker images REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> ca61c1748170 2 hours ago 1.11GB node latest 5212d…...
Android(Kotlin) 委托(by) 封装 SharedPreferences
在 Kotlin 中,委托是一种通过将自身的某个功能交给另一个对象来实现代码重用的技术。通过委托,我们可以将某个属性或方法的实现委托给另一个对象,从而减少重复代码的编写。委托可以用于实现多重继承、代码复用和扩展现有类的功能。 Kotlin 中…...
2022年蓝桥杯省赛软件类C/C++B组----积木画
想借着这一个题回顾一下动态规划问题的基本解法,让解题方法清晰有条理,希望更多的人可以更轻松的理解动态规划! 目录 【题目】 【本题解题思路】 【DP模版】 总体方针: 具体解题时的套路: 【题目】 【本题解题思…...
Python数据挖掘项目开发实战:使用朴素贝叶斯进行社会媒体挖掘
注意:本文下载的资源,与以下文章的思路有相同点,也有不同点,最终目标只是让读者从多维度去熟练掌握本知识点。 Python数据挖掘项目开发实战:使用朴素贝叶斯进行社会媒体挖掘 一、项目背景与目标 在社交媒体时代&…...
【DM8】ET SQL性能分析工具
通过统计SQL每个操作符的时间花费,从而定位到有性能问题的操作,指导用户去优化。 开启ET工具 INI参数: ENABLE_MONITOR1 MONITOR_SQL_EXEC1 查看参数 select * FROM v$dm_ini WHERE PARA_NAMEMONITOR_SQL_EXEC;SELECT * FROM v$dm_ini WH…...
001-谷粒商城-微服务剖析
1、架构图 还是很强的,该有的都有 2、微服务模块 SpringCloudAlibaba组件包括 SentinelNacosRocketMQSeata 搭配SpringCloudAlibaba组件 OpenFeignGateWayRibbn gateway使用了SpringWebFlux,前几天研究到,为什么springboot不直接使用Spri…...
vue实现前端打印效果
如图效果所示(以下演示代码) <template><div><el-button v-print"printObj" type"primary" plain click"handle">{{ text }}</el-button><div style"display: none"><div id…...
android wifi直连 wifip2pmanager
android wifi直连 wifip2pmanager;使用WiFi 直连,然后通过udp进行通讯。 Android WiFi 直连(Wi-Fi Direct,也称为Wi-Fi P2P)是一种让两台或多台设备通过Wi-Fi技术直接进行点对点连接的技术,无需借助传统的无…...
伸缩应用程序和执行滚动更新
📕作者简介: 过去日记,致力于Java、GoLang,Rust等多种编程语言,热爱技术,喜欢游戏的博主。 📘相关专栏Rust初阶教程、go语言基础系列、spring教程等,大家有兴趣的可以看一看 📙Jav…...
解决WPS右键菜单冗余选项,去除WPS右键菜单选项
问题描述 安装WPS后,右键菜单会多出许多无用的选项,如何去除? 解决方法 按下WindowsS打开搜索栏,搜索配置工具打开 勾选所有的关闭和隐藏选项...
部署ELFK+zookeeper+kafka架构
目录 前言 一、环境部署 二、部署ELFK 1、ELFK ElasticSearch 集群部署 1.1 配置本地hosts文件 1.2 安装 elasticsearch-rpm 包并加载系统服务 1.3 修改 elasticsearch 主配置文件 1.4 创建数据存放路径并授权 1.5 启动elasticsearch是否成功开启 1.6 查看节点信息 …...
ActiveMQ 任意文件上传漏洞复现
一、使用弱口令登陆 访问 http://ip:8161/admin/ 进入admin登陆页面,使用弱口令登陆,账号密码皆为 admin,登陆成功后,headers中会出现验证信息 如: Authorization: Basic YWRtaW46YWRtaW4 # 二、利用PUT协议上…...
k8s实践总结
一、pod常用操作: 1、如何重启pod? 1.1 删除并重新创建Pod 这是最直接的方法。你可以通过kubectl命令行工具删除Pod,然后Kubernetes将基于其对应的Deployment、ReplicaSet或其他控制器自动重新创建它。 不建议并行删除全部pod,…...
前端从零到一搭建脚手架并发布到npm
这里写自定义目录标题 为什么需要脚手架?前置-第三方工具的使用1. 创建demo并运行-4步新建文件夹 zyfcli,并初始化npm init -y配置入口文件 2.commander-命令行指令3. chalk-命令行美化工具4. inquirer-命令行交互工具5. figlet-艺术字6. ora-loading工具…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
