50.MongoDB快速入门实战
MongoDB概念
MongoDB是一个文档数据库(以 JSON 为数据模型),由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。
原则上 Oracle 和 MySQL 能做的事情,MongoDB 都能做(包括 ACID 事务)。
MongoDB vs 关系型数据库
SQL | MongoDB | |
---|---|---|
数据库(database) | 数据库(database) | |
表(table) | 集合(collection) | |
行(row) | 文档(document) | |
列(column) | 字段(field) | |
索引(index) | 索引(index) | |
主键(primary key) | _id | |
视图(view) | 视图(view) | |
表连接(tablejoin) | 聚合操作($lookup) |
MongoDB环境搭建
#启动命令
mongod -f /data/mongodb/conf/mongo.conf --auth
#关闭服务
mongod --port=27017 --dbpath=/data/mongodb/data --shutdown #客户端
mongosh
#进入 mongosh 后
use admin
db.shutdownServer()
MongoDB命令操作
#============== 数据库操作 ==============
#查看所有库
show dbs
# 切换到指定数据库,不存在则创建
use test
# 删除当前数据库
db.dropDatabase()#============== 集合操作 ==============
#查看集合
show collections
#创建集合
db.createCollection("emp")
#删除集合
db.emp.drop()#============== 用户管理 ==============
# 设置管理员用户名密码需要切换到admin库
use admin
#创建管理员
db.createUser({user:"lyw",pwd:"123456",roles:["root"]})
# 查看当前数据库所有用户信息
show users
#显示可设置权限
show roles
#显示所有用户
db.system.users.find()
#删除指定用户
db.dropUser("lyw")
#删除当前数据库所有用户db.dropAllUser()#============== 权限管理 ==============
db.grantRolesToUser( "lyw" , [ { role: "clusterAdmin", db: "admin" } ,{ role: "userAdminAnyDatabase", db: "admin"},{ role: "readWriteAnyDatabase", db: "admin"} ])#============== 执行js脚本导入数据 ==============
load("books.js")#============== 文档操作 ==============#保证数据不丢失 设置 writeConcern 参数的示例
#- w:指定写入确认级别。如果指定为数字,则表示要等待写入操作完成的节点数。如果指定为 majority,则表示等待大多数节点完成写入操作。默认为 1,表示等待写入操作完成的节点数为 1。
#- j:表示写入操作是否要求持久化到磁盘。如果设置为 true,则表示写入操作必须持久化到磁盘后才返回成功。如果设置为 false,则表示写入操作可能在数据被持久化到磁盘之前返回成功。默认为 false。
#- wtimeout:表示等待写入操作完成的超时时间,单位为毫秒。如果超过指定的时间仍然没有返回确认信息,则返回错误。默认为 0,表示不设置超时时间。
db.emps.insertOne({ name: "fox", age: 35},{writeConcern: { w: "majority", j: true, wtimeout: 5000 }}
)#批量新增文档
db.emps.insertMany([{ name: "xiaming", age: 18},{ name: "xiaming", age: 18},{ name: "xiaming", age: 18},{ name: "xiaming", age: 18},{ name: "xiaming", age: 18},{ name: "wangwu", age: 80},{ name: "wangwu", age: 80, area:["beijing","shanghai"]}],{writeConcern: { w: "majority", j: true, wtimeout: 5000 }}
)#查询集合中的第一个文档
db.emps.findOne({_id:ObjectId("653a730e3c8a14a69c559e6b")})
db.emps.findOne({age:{$gt:60}})
#查询age大于60的文档
db.emps.find({age:{$gt:60}})
db.emps.find({age:{$gt:60},area:{$in:["beijing"]}})#更新文档
db.emps.updateOne({_id:ObjectId("653a730e3c8a14a69c559e6b")},{$inc:{age:1}})
db.emps.updateMany({name:"xiaming"},{$set:{age:10}})#findAndModify兼容了查询和修改指定文档的功能
db.emps.findAndModify({query:{_id:ObjectId("653a730e3c8a14a69c559e6b")},update:{name:"jiutian"},new: true
})#删除文档
db.emps.deleteOne ({ name:"jiutian" })
#删除集合下全部文档
db.emps.deleteMany ({}) #============== 批量操作 bulkwrite() ==============
#- insertOne - updateOne - updateMany - replaceOne - deleteOne - deleteMany
db.emps.bulkWrite( [{ insertOne: { document: { _id: 3, type: "beef", size: "medium", price: 6 } } },{ insertOne: { document: { _id: 4, type: "sausage", size: "large", price: 10 } } },{ updateOne: {filter: { type: "cheese" },update: { $set: { price: 8 } }} },{ deleteOne: { filter: { type: "pepperoni"} } },{ replaceOne: {filter: { type: "vegan" },replacement: { type: "tofu", size: "small", price: 4 }} }] )
处理分页问题 – 巧分页
应该避免使用skip/limit形式的分页。使用查询条件+唯一排序条件
固定(封顶)集合
保证数据库只会存储“限额”的数据,超过该限额的旧数据都会被丢弃。
#创建固定集合
db.createCollection("logs",{capped:true,size:4096,max:10})#查看文档的占用空间
db.logs.stats()
适用场景
-
系统日志,这非常符合固定集合的特征,而日志系统通常也只需要一个固定的空间来存放日志。在MongoDB内部,副本集的同步日志(oplog)就使用了固定集合。
-
存储少量文档,如最新发布的TopN条文章信息。得益于内部缓存的作用,对于这种少量文档的查询是非常高效的。
相关文章:
50.MongoDB快速入门实战
MongoDB概念 MongoDB是一个文档数据库(以 JSON 为数据模型),由C语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。 原则上 Oracle 和 MySQL 能做的事情,MongoDB 都能做(包括 ACID 事务&#x…...

一款功能强大的音乐曲谱软件Guitar Pro 8 .1.1for Mac 中文破解版
Guitar Pro 8 .1.1for Mac 中文破解版是一款功能强大的音乐曲谱软件,非常适合学习如何玩,改进技巧,重现喜爱的歌曲或陪伴自己。可以帮助我们进行吉他的学习、绘谱与创作,它包含了几乎所有的吉他现有指法及音色,在做弹拨…...

图论基础和表示
一、概念及其介绍 图论(Graph Theory)是离散数学的一个分支,是一门研究图(Graph)的学问。 图是用来对对象之间的成对关系建模的数学结构,由"节点"或"顶点"(Vertex)以及连接这些顶点的"边"(Edge&a…...
STM32 音频ADC转wav格式
STM32 音频ADC DAC测试方法_stm32 adc 音频-CSDN博客 STM32--vs1053 WAV录音实现(保存在SD卡)_vs1053 多字节读取-CSDN博客 单片机内部AD实现录音wav文件_adc语音信号采样_天外飞仙CUG的博客-CSDN博客 PCM编码格式_pcm格式-CSDN博客 用ADC编码PCM数据…...
面试中经常问道的问题二
深入理解前端跨域方法和原理 前言 受浏览器同源策略的限制,本域的js不能操作其他域的页面对象(比如DOM)。但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦。所以我们要通过一些方法使本域的js能够操作其他域的页面对象或者使…...

SQL UPDATE 语句(更新表中的记录)
SQL UPDATE 语句 UPDATE 语句用于更新表中已存在的记录。 还可以使用AND或OR运算符组合多个条件。 SQL UPDATE 语法 具有WHERE子句的UPDATE查询的基本语法如下所示: UPDATE table_name SET column1 value1, column2 value2, ... WHERE conditi…...
js节流和防抖
节流(throttle)和防抖(debounce)是为了解决函数频繁触发而引发性能问题的两种优化方法。 节流: 指定一个时间间隔,在时间间隔内只执行一次函数,即在一段时间内,多次触发函数只执行一…...

权限系统设计(转载)
1 为什么需要权限管理 2 权限模型 2.1 权限设计 2.2 为什么需要角色 2.3 权限模型的演进 2.4 用户划分 2.5 理想的RBAC模型 3 权限系统表设计 3.1 标准RBAC模型表设计 3.2 理想RBAC模型表设计 4 结语 1 为什么需要权限管理 日常工作中权限的问题时时刻刻伴随着我们&a…...

【机器学习合集】标准化与池化合集 ->(个人学习记录笔记)
文章目录 标准化与池化1. 标准化/归一化1.1 归一化归一化的作用 1.2 标准化批标准化方法 Batch Normailzation标准化方法的对比自动学习标准化方法 2. 池化2.1 池化的作用2.2 常见的池化方法2.3 池化方法的差异2.4 池化的必要性 标准化与池化 1. 标准化/归一化 1.1 归一化 归…...

Dockerfile文件自动化生成R4L镜像
Dockerfile文件自动化生成R4L镜像的步骤 1、安装Docker:2、使用Dockerfile一键生成镜像:3、查看生成的Docker镜像:4、删除Docker镜像:5、生成Docker容器:6、查看容器7、删除容器 1、安装Docker: curl -fsS…...

基于SSM的居家养老系统
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…...
[C#基础训练]FoodRobot食品管理部分代码-2
参考代码: using System; using System.Collections.Generic;namespace FoodRobotDemo {public class FoodInfo{ public string Name { get; set; } public int Id { get; set; } public int Count { get; set; }}public class FoodRobot{private …...

docker部署rabbitmq的坑
背景 今天用docker部署rabbitmq,启动都一起正常,但是当访问15672端口时,不能加载出页面。 排查 1.防火墙是否开启 ufw status2.ip是否能ping通 ping 192.168.x.x3.检查docker日志 docker psdocker logs -f 容器id4.进入容器,…...
【python VS vba(系列2)】 python和vba读写EXCEL文件的方式比较 (建设ing)
目录 1 用VBA读写EXCEL文件 1.1 用VBA读写,本工作簿workbook里的特定sheet的特定内容 1.1.1 EXCEL表内内容访问 1.1.2 注意点 1.1.3 代码 1.2 用VBA读写本工作簿workbook里的所有sheet的内容 1.2.1 麻烦之处 1.2.2 方法,如何指定EXCEL里的内容…...

小程序 swiper滑动 层叠滑动效果
整个红色区域为可滑动区域,数字1区域为展示区域,数字2为下一个展示模块 <scroll-view class"h_scroll_horizontal" enhanced"ture" bind:touchend"touchEnd" bind:touchstart"touchStart"><view clas…...

【20年VIO梳理】
19-20年VIO 梳理 1. 开源代码介绍: DSM2. FMD Stereo SLAM:融合MVG和直接方法,实现准确,快速的双目SLAM3. 基于VINS-Mono开发的SPVIS4. 改进:一种基于光流的动态环境移动机器人定位方案5. PVIO:基于先验平面约束的高效…...
Java Object类详解
Object 是 java 类库中的一个特殊类,也是所有类的父类。也就是说,Java 允许把任何类型的对象赋给 Object 类型的变量。当一个类被定义后,如果没有指定继承的父类,那么默认父类就是 Object 类。因此,以下两个类表示的含…...

Unity 中忽略图片透明度的 Image 组件的修改版本
只需将此组件添加到画布中的空对象即可。请注意,仅支持简单 图像类型。 using System.Collections.Generic; using UnityEngine; using UnityEngine.Sprites; using UnityEngine.UI; #if UNITY_2017_4 || UNITY_2018_2_OR_NEWER using UnityEngine.U2D; #endif#if U…...

hibernate源码(1)--- schema创建
sessionFactory 配置项: hibernate的核心是sessionFactory,那我们看看如何构建session Factory。 参考官网: plugins {id("java") } group "com.atai.hibernatespy" version "1.0-SNAPSHOT" repositories…...

数学与经济管理
数学与经济管理(2-4分) 章节概述 最小生成树问题 答案:23 讲解地址:74-最小生成树问题_哔哩哔哩_bilibili 最短路径问题 答案:81 讲解地址:75-最短路径问题_哔哩哔哩_bilibili 网络与最大流量问题 真题 讲解…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
全面解析各类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…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...

恶补电源:1.电桥
一、元器件的选择 搜索并选择电桥,再multisim中选择FWB,就有各种型号的电桥: 电桥是用来干嘛的呢? 它是一个由四个二极管搭成的“桥梁”形状的电路,用来把交流电(AC)变成直流电(DC)。…...