MongoDB (零) 安装和简单使用
1.安装(Ubuntu)
1.1.安装gnupg
sudo apt-get install gnupg
1.2.获取GPG Key
curl -fsSL https://pgp.mongodb.com/server-6.0.asc | \sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg \--dearmor
1.3.创建本地文件
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
1.4.更新系统
sudo apt-get update
1.5.安装mongodb
sudo apt-get install -y mongodb-org
1.6.启动mongodb
sudo systemctl start mongod
或者重启
sudo systemctl restart mongod
停止命令
sudo systemctl stop mongod
1.7.查询状态
sudo systemctl status mongod
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2023-04-24 14:32:14 CST; 14s ago
Docs: https://docs.mongodb.org/manual
Main PID: 63530 (mongod)
Memory: 65.3M
CGroup: /system.slice/mongod.service
└─63530 /usr/bin/mongod --config /etc/mongod.conf
4月 24 14:32:14 szx5apln622219 systemd[1]: Started MongoDB Database Server.
1.8.Robo3t 可视化工具
sudo snap install robo3t-snap
2.使用
2.1.登录
mongosh
2.2.数据库
2.2.1.创建数据库
use mydatabase
2.2.2.删除数据库
db.dropDatabase()
删除当前数据库
2.3.创建用户
db.createUser({user:"root",pwd:"root",roles:[{"role":"userAdmin","db":"admin"},{"role":"root","db":"admin"},{"role":"userAdminAnyDatabase","db":"admin"}]})
2.4.集合
2.4.1.创建集合
相当于表
db.createCollection(name, options)
其中options为可选项, 通常不设置, 如:
db.createCollection('reel')
2.4.2.删除集合
db.reel.drop()
3.CURD
3.1.插入数据
db.reel.insertOne({reel_id: 'X0001', name: 'R_1', qty: 100})db.reel.insertMany([{reel_id: 'X0001', name: 'R_1', qty: 100},{reel_id: 'X0002', name: 'R_2', qty: 50}])
或者insert 方法已经过时
db.reel.insert({reel_id: 'X0001', name: 'R_1', qty: 100})
或者
db.reel.save({reel_id: 'X0001', name: 'R_1', qty: 100})
如果集合reel沒有在2.4创建, 则reel当插入数据之后就会自动创建
3.2.查询
3.2.1.查询所有数据
db.reel.find()
3.3.修改
3.3.1.update(已过时)
db.reel.update({reel_id: "X0001"}, {$set:{name:"RR_1"}},{multi:true})
第一个json, 是查询的条件
第二个json里面$set为需要设置的值, 满足条件的数据将被set为里面的值
第三个json, 有三个参数
upsert: 设置为true的时候, 意思是没有更新的数据,就插入一条, 默认false
multi: 设置为true的时候, 意思是更新多条, 默认false, 只更新找到的第一条
writeConcern:抛出异常的级别
3.3.2.updateOne
db.reel.updateOne({reel_id: "X0001"}, {$set:{name:"RR_1"}})
3.3.3.updateMany
db.reel.updateMany({reel_id: "X0001"}, {$set:{name:"RR_1"}})
3.3.2.save方法
db.reel.save({_id:ObjectId("64462d4c7f025efddf513e66"), reel_id: "X0001"}, {$set:{name:"RR_1"}})
_id 主键存在就更新,不存在就插入
3.4.删除
3.4.1.删除单个文档
db.reel.deleteOne({name:"RR_1"})
3.4.2.删除多个文档
db.reel.deleteMany({name:"RR_1"})
3.4.3.全部删除
db.reel.deleteMany({})
3.4.4.remove删除(不推荐使用)
3.4.4.1.删除单个
db.reel.remove({name:"RR_1"}, true)
或者
db.reel.remove({name:"RR_1"}, 1)
3.4.4.2.删除多个
db.reel.remove({name:"RR_1"})
3.4.4.3.删除所有数据
db.reel.remove({})
3.5. AND / OR / LIKE
3.5.1.AND
db.reel.find({reel_id:"X0001",name:"R_1"})
3.5.2.LIKE
3.5.2.1.like ‘%A%’
db.reel.find({name:/R/})
3.5.2.2.like ‘A%’
db.reel.find({name:/^R/})
3.5.2.3.like ‘%A’
db.reel.find({name:/1$/})
3.5.3.OR
db.reel.find({$or:[{reel_id:"X0001"},{name:"R_1"}]})
3.5.4.AND和OR联合使用
db.reel.find({qty: {$gt:50}, $or: [{reel_id: "X0001"},{name: "R_1"}]})
3.6.符号
3.6.1.等于
db.reel.find({name:'R_1'})
3.6.2.小于
db.reel.find({qty:{$lt:10}})
3.6.3.小于等于
db.reel.find({qty:{$lte:10}})
3.6.4.大于
db.reel.find({qty:{$gt:10}})
3.6.5.大于等于
db.reel.find({qty:{$gte:10}})
3.6.6.不等于
db.reel.find({qty:{$ne:10}})
3.2.7.类型操作符
db.col.find({"title" : {$type : 2}})
或者
db.col.find({"title" : {$type : 'string'}})
类型表
| 数字值 | 类型 |
|---|---|
| 1 | double |
| 2 | string |
| 3 | object |
| 4 | array |
| 5 | binary data |
| 6 | undefined(已废弃) |
| 7 | object id |
| 8 | boolean |
| 9 | date |
| 10 | null |
| 11 | Regular Expression |
| 13 | JavaScript |
| 14 | Symbol |
| 15 | JavaScript (with scope) |
| 16 | 32-bit integer |
| 17 | timestamp |
| 18 | 64-bit integer |
| 255 / -1 | Min key |
| 127 | max key |
3.7.分页
db.reel.find().limit(10).skip(1)
limit为查询数量, skip为跳过指定数量的数据
3.8.排序
db.reel.find().sort({"qty": -1})
sort里面的key为排序的字段, -1为降序, 1为升序
相关文章:
MongoDB (零) 安装和简单使用
1.安装(Ubuntu) 1.1.安装gnupg sudo apt-get install gnupg1.2.获取GPG Key curl -fsSL https://pgp.mongodb.com/server-6.0.asc | \sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg \--dearmor1.3.创建本地文件 echo "deb [ archamd64,arm64 signed-by/usr…...
Java中的异常是什么?
Java中的异常是指在程序运行时发生的错误或异常情况。这些异常可能会导致程序崩溃或无法正确执行,因此需要在代码中进行处理。Java中的异常机制可以帮助程序员捕获并处理异常,从而保证程序的稳定性和可靠性。 Java中的异常分为两种类型:受检…...
微短剧“小阳春”,“爱优腾芒”抢滩登陆?
降本增效一整年,长视频平台们似乎扭转了市场对于它们“烧钱”的印象。 爱奇艺宣布2022全年盈利,腾讯视频宣布从去年10月起开始盈利,视频平台们结束了一场“无限战争”。 与此同时,随着短视频平台的崛起,视频内容的形…...
C++菱形继承(再剖析)
当子类对象给父类对象的时候,怎么找公共的虚基类(A) 就得通过偏移量来算虚基类的位置 ---------------------------------------------------------------------------------------------------------------------------- 我们来分析一下B…...
java获取星期几
如果你要问 java什么时候学习比较好,那么答案肯定是 java的星期几。 在 Java中,你可以使用 public static void main ()方法来获取一个类的所有成员变量,然后在所有类中调用这个方法来获取对象的所有成员变量。它能以对…...
【TypeScript】03-TypeScript基本类型
TypeScript基本类型 在TypeScript中,基本类型是非常重要的一部分,下面我们将详细介绍TypeScript中的基本类型。 基本类型约束 在TypeScript中,可以使用基本类型来约束变量的类型。常见的基本类型有: number:表示数…...
什么是跨域?
什么是跨域 什么是跨域? 什么是同源策略及其限制内容? 同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSRF等攻击。所谓同源是指"协议域名端口"三者相…...
Gradle理论与实践—Gradle构建脚本基础
Gradle构建脚本基础 Project: 根据业务抽取出来的一个个独立的模块Task:一个操作,一个原子性操作。比如上传一个jar到maven中心库等Setting.gradle文件:初始化及整个工程的配置入口build.gradle文件: 每个Project都会有个build.gradle的文件…...
【Vue 基础】vue-cli初始化项目及相关说明
目录 1. 创建项目 2. 项目文件介绍 3. 项目的其它配置 3.1 项目运行时,让浏览器自动打开 3.2 关闭eslint校验功能 3.3 src文件夹简写方法 1. 创建项目 vue create 项目名 2. 项目文件介绍 创建好的项目中包含如下文件: (1)…...
【c语言】详解c语言#预处理期过程 | 宏定义前言
c语言系列专栏: c语言之路重点知识整合 创作不易,本篇文章如果帮助到了你,还请点赞支持一下♡>𖥦<)!! 主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步! 给大家跳段街舞感谢支持…...
内网远程控制软件哪个好用
市面上远程控制软件很多,但是支持纯内网环境(无外网)的很少。大部分远程控制软件可以在局域网用,但是它的数据流量还是要走软件公司服务器,也就是要走外网,所以在纯内网环境没法使用。那么什么软件支持纯内…...
【计算机基本原理-数据结构】数据结构中树的详解
【计算机基本原理-数据结构】数据结构中树的详解 1)总览2)树的相关概念3)二叉树、满二叉树、完全二叉树4)二叉查找树 - BST5)平衡二叉树 - AVL6)红黑树7)哈弗曼树8)B 树9)…...
数字设计小思 - D触发器与死缠烂打的亚稳态
前言 本系列整理数字系统设计的相关知识体系架构,为了方便后续自己查阅与求职准备。在FPGA和ASIC设计中,D触发器是最常用的器件,也可以说是时序逻辑的核心,本文根据个人的思考历程结合相关书籍内容和网上文章,聊一聊D…...
Notes/Domino 11.0.1FP7以及在NAS上安装Domino等
大家好,才是真的好。 目前HCL在还是支持更新的Notes/Domino主要是三个版本,V10、11和12,这不,上周HCL Notes/Domino 11.0.1居然推出了FP7补丁包程序。 从V10.0.1开始,Domino的FP补丁包程序主要是用来修复对应主要版本中的一些问…...
【VM服务管家】VM4.x算子SDK开发_3.3 模块工具类
目录 3.3.1 位置修正:位置修正算子工具的使用方法3.3.2 模板保存:实现模板自动加载的方法3.3.3 模板匹配: 获取模板匹配框和轮廓点的方法3.3.4 模板训练:模板训练执行完成的判断方法3.3.5 图像相减:算子SDK开发图像相减…...
Aspose.Pdf使用教程:在PDF文件中添加水印
Aspose.PDF 是一款高级PDF处理API,可以在跨平台应用程序中轻松生成,修改,转换,呈现,保护和打印文档。无需使用Adobe Acrobat。此外,API提供压缩选项,表创建和处理,图形和图像功能&am…...
H.264/AVC加密----选择加密
文献学习: 《Data Hiding in Encrypted H.264/AVC Video Streams by Codeword Substitution》 期刊:IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY 简介 通过分析H.264/AVC编解码器的特性,提出了三个敏感部分(IPM、MVD和残差系…...
WuThreat身份安全云-TVD每日漏洞情报-2023-04-26
漏洞名称:Google Android 命令注入漏洞 漏洞级别:高危 漏洞编号:CVE-2023-20964,CNNVD-202303-538 相关涉及:None 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-05794 漏洞名称:OpenSSL RSA 解密时间差异 漏洞级别:中危 漏洞编号:CVE-2022-4…...
剑指 Offer第二版:1~n 整数中 1 出现的次数、51. 数组中的逆序对、56 - II. 数组中数字出现的次数 II
剑指 Offer第二版 43. 1~n 整数中 1 出现的次数51. 数组中的逆序对56 - II. 数组中数字出现的次数 II 43. 1~n 整数中 1 出现的次数 题目:输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。 例如,…...
云原生-k8s核心概念(pod,deploy,service,ingress,configmap,volume)
Gitee-k8s学习 云原生实战-kubernetes核心实战 namespace Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离 Pod Pod可以认为是容器的封装,一个Pod中可以存在一个或者多个容器。 De…...
游戏多开防封号?聊聊用天翼云低成本搭建SK5代理池的真实体验与避坑心得
游戏多开防封号实战:天翼云SK5代理池搭建全记录与深度优化指南 作为一名资深游戏多开玩家,我曾在《魔兽世界》怀旧服同时运营8个采集账号,结果三天内全军覆没——官方封号邮件里赫然写着"同一IP下异常多账号操作"。这次惨痛经历让…...
大模型小白入门指南:从工作原理到实用技巧(收藏版)
本文深入解析了大语言模型(LLM)的核心工作原理,包括Transformer架构的自注意力机制和位置编码,以及预训练和指令微调的训练范式。同时,文章还提供了实用的提示工程技巧,帮助读者更好地与AI协作。此外&#…...
15 分钟上线|开源克隆网站 + 一键部署,搭建你自己的产品
把目标网站像素级克隆下来,再用部署技能把它一键部署到线上。全程主要靠自然语言对话完成,不需要命令行操作,不需要懂代码。你要做的只有一件事:把“你想复制哪个网站、要怎么上线”说清楚,其它交给 AI 去检测、拆解、…...
Granite TimeSeries FlowState R1高可用部署架构:基于Kubernetes的容器化方案
Granite TimeSeries FlowState R1高可用部署架构:基于Kubernetes的容器化方案 如果你正在为时间序列预测模型的生产部署而头疼,担心服务不稳定、无法应对流量高峰,那么这篇文章就是为你准备的。今天,我们来聊聊如何把一个强大的时…...
Java后端如何优雅地封装第三方API调用逻辑以对接美团外卖霸王餐接口
Java后端如何优雅地封装第三方API调用逻辑以对接美团外卖霸王餐接口 在Java后端开发中,对接第三方API(如美团外卖霸王餐接口)是常见的需求。直接在业务代码中拼接URL、处理JSON、写HTTP请求不仅导致代码臃肿,还难以维护和测试。 本…...
Bootstrap 下拉菜单:全面解析与应用指南
Bootstrap 下拉菜单:全面解析与应用指南 引言 Bootstrap 是一个流行的前端框架,它提供了丰富的组件和工具来帮助开发者快速构建响应式、美观的网页。其中,下拉菜单是 Bootstrap 中一个常用且重要的组件,它能够帮助用户在有限的空间…...
OSI七层模型的意义:网络世界的工程思维密码
理解七层网络模型(OSI模型)的意义,不在于死记硬背哪一层叫什么名字,而在于它能帮你建立一套拆解复杂系统的思维框架。具体来说,学习它主要有以下几层价值:1. 建立“分而治之”的工程思维网络通信是一个极其…...
基于H5的初学开发
目标: 1.能搭出页面 2.能看懂基本标签 3.能做表单 4.能放图片、音频、视频 5.能做简单画布效果 6.能做一个 AI Photo Booth 静态演示页 7.每个实验做完都能看到结果,不容易卡死 开发工具:VS Cod 本实验覆盖哪些 H5 内容 1.h…...
Qt, C++数据类型扩展问题
Qt项目中ObjectDic类的类型扩展与代码优化 前言 在Qt项目开发中,我们经常会遇到需要处理不同类型数据的情况,尤其是当涉及到负数时,类型的选择就显得尤为重要。本文将详细介绍如何在Qt项目中扩展ObjectDic类的类型支持,从无符号整…...
算法模拟类题目解析
前言:最近开始偏系统的从简单到难一步步刷算法题,先从模拟题开始,下边附带题目与连接,感兴趣可刷刷也可看看我的思路。 一.字符串展开 链接:https://ac.nowcoder.com/acm/problem/16644 来源:牛客网 题意…...
