MongoDB快速入门指南与docker-compose快体验
MongoDB快速入门指南与docker-compose快体验
MongoDB相对于RDBMS的优势
- 模式少 -MongoDB是一个文档数据库,其中一个集合包含不同的文档。一个文档之间的字段数,内容和文档大小可能会有所不同。
- 单个对象的结构清晰。
- 没有复杂的联接。
- 深入的查询能力。MongoDB支持使用与SQL几乎一样强大的基于文档的查询语言对文档进行动态查询。
- sql Tuning(优化)
- 易于扩展
- 不需要将应用程序对象转换/映射到数据库对象。
- 使用内部存储器存储(窗口式)工作集,从而可以更快地访问数据
RDBMS:关系数据库管理系统
为什么要使用MongoDB
- 面向文档的存储,BSON格式存储,即Binary JSON
- 单键索引、复合索引、多键索引、地理空间索引、全文本索引和哈希索引
- MongoDB实现高可用 主从复制
- 自动分片 auto sharding
- 丰富的查询
- 快速原地更新(fast in-place updates):大部分更新操作无需申请新空间
- MongoDB的专业支持map/reduce支持
- Gridfs:各种size大小的集群文件支持
在哪里使用MongoDB
- 大数据
- 内容管理和交付
- 移动和社交基础设施
- 用户数据管理
- 数据中心
docker-compose 快速启动 MongoDB
docker-compose.yml
version: '3'
services:
mongodb:
image: mongo:4.2.6 # 镜像:版本
container_name: mongo_db
environment:
- MONGO_INITDB_DATABASE=默认的数据库
- MONGO_INITDB_ROOT_USERNAME=你的root管理员名称
- MONGO_INITDB_ROOT_PASSWORD=你的root管理员名称密码
volumes:
- ./mongo/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro
- ./mongo/mongo-volume:/data/db
ports:
- "27017-27019:27017-27019"
restart: always
init-mongo.js
// db.getSiblingDB() 相当于 use admin;
db.getSiblingDB('admin')
.createUser({
user: 'user',
pwd: 'user',
roles: ['readWrite']
});
然后执行命令
docker-compose up -d
Navicat Premium连接
填入上述 docker-compose.yml 对应的参数
测试连接,测试成功
如果你的不显示,去
navicat ==》 菜单 ==》 显示 ==》钩上显示隐藏的项目
重启navicat就可以了
打开一个集合右下角可以查看
- 网格视图
- 树视图
- JSON视图
增删改查
1.创建操作
- db.collection.insertOne()
- db.collection.insertMany()
// 插入集合名称为products的集合并插入数据 (不存在集合会新建)
db.products.insertOne({
item: "card",
qty: 15
});
// 批量插入数据
db.products.insertMany([{
item: "card1",
qty: 16
}, {
item: "card2",
qty: 17
}, {
item: "envelope",
qty: 20
}, {
item: "stamps",
qty: 30
}]);
2.查询操作
- db.collection.find()
db.products.find({ qty: 15 }).limit(1)
3.更新操作
- db.collection.updateOne()
db.collection.updateOne(filter,update,options)
查找与过滤器匹配的第一个文档,并应用指定的更新修改。
db.products.find({
item: "stamps"
}).limit(1);
// 找到item为stamps的并修改其qty为60
db.products.updateOne(
{
"item": "stamps"
},
{
$set: {
"qty": 60
}
}
);
db.products.find({
item: "stamps"
}).limit(1);
- db.collection.updateMany()
// 把qty大于15的统统修改为15
db.products.updateMany(
{
qty: {
$gt: 15
}
},
{
$set: {
"qty": 15
}
}
);
- db.collection.replaceOne()
使用替换文档替换集合中与过滤器匹配的第一个匹配文档。
// 把集合products中item为stamps 整个替换掉
db.products.replaceOne(
{ "item" : "stamps" },
{ "item" : "stampss", "Borough" : "Manhattan" }
);
4.删除操作
// 删除item为stampss的
db.products.deleteOne( { "item" : "stampss" } );
// 批量删除qty小于15的
db.products.deleteMany( { "qty" : {$lt: 15} } );
持续更新连接
MongoDB快速入门指南与docker-compose快体验的更多相关文章
- AngularJS快速入门指南18:Application
是时候创建一个真正的AngularJS单页面应用程序了(SPA). 一个AngularJS应用程序示例 你已经了解了足够多的内容来创建第一个AngularJS应用程序: My Note Save Cl ...
- CI Weekly #21 | iOS 持续集成快速入门指南
搭建 iOS 持续集成环境要多久?每个 iOSer 都有不同的答案.这次我们整理了 flow.ci 的 iOS 持续集成的相关文档和最佳实践,希望帮你更快地完成构建.更新文档见: flow.ci iO ...
- [转] Spark快速入门指南 – Spark安装与基础使用
[From] https://blog.csdn.net/w405722907/article/details/77943331 Spark快速入门指南 – Spark安装与基础使用 2017年09月 ...
- KNIME快速入门指南
一.介绍 KNIME Analytics Platform是用于创建数据科学应用程序和服务的开源软件.KNIME直观,开放,不断整合新的开发,使人们可以理解数据,设计数据科学工作流程和可重用组件. ...
- 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)
今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...
- AngularJS快速入门指南20:快速参考
thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...
- AngularJS快速入门指南19:示例代码
本文给出的大部分示例都可以直接运行,通过点击运行按钮来查看结果,同时支持在线编辑代码. <div ng-app=""> <p>Name: <input ...
- AngularJS快速入门指南17:Includes
使用AngularJS,你可以在HTML中包含其它的HTML文件. 在HTML中包含其它HTML文件? 当前的HTML文档还不支持该功能.不过W3C建议在后续的HTML版本中增加HTML import ...
- AngularJS快速入门指南16:Bootstrap
thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...
随机推荐
- 【Linux常见命令】alias命令
alias命令用于查看和设置指令的别名. 用户可利用alias,自定指令的别名. 若仅输入alias,则可列出目前所有的别名设置. alias的效力仅及于该次登入的操作.若要每次登入是即自动设好别名, ...
- 【Leetcode】104. 二叉树的最大深度
题目 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例:给定二叉树 [3,9,20,null,null,15,7 ...
- 日日算法:Dijkstra算法
介绍 Dijistra算法作为一种最短路径算法,可以用来计算一个节点到图上其他节点的最短距离. 主要是通过启发式的思想,由中心节点层层向外拓展,直到找到中点. 适用于无向图和有向图. 算法思想 假设我 ...
- mybatis源码学习(二):SQL的执行过程
从上一篇文章中,我们了解到MapperMethod将SQL的执行交给了sqlsession处理.今天我们继续往下看处理的过程. SqlSession接口除了提供获取Configuration,Mapp ...
- Computational Geometry
矩形重叠 看过某司一道笔试题:给\(n\)个矩形左下和右上坐标(不能斜放),求重叠最多处矩形个数. 这道题本身不难:可以遍历所有矩形边界组成的点,计算该点被多少矩形包围,从而选出最大值. 由此引申出一 ...
- 数学--数论--HDU1222 狼和兔子(最大公约数)
问题描述 有一座周围有n个洞的小山.孔从0到n-1有符号. 兔子必须藏在其中一个洞中.狼以逆时针方向搜索兔子.他第一个进入的洞是一个用0签名的洞.然后,他将每m个洞进入一个洞.例如,m = 2和n = ...
- tar命令基本、进阶使用指北
tar命令基本.进阶使用指北 摘要 打包与压缩是我们在计算机系统日常使用中必备的一个工具,就如我们在使用Windows系统,也需要类似WinRAR的压缩软件来将许多数据.文件打包成一个文件,并压缩其占 ...
- 【WPF学习】第六十八章 自定义绘图元素
上一章分析了WPF元素的内部工作元素——允许每个元素插入到WPF布局系统的MeasureOverride()和ArrangeOverride()方法中.本章将进一步深入分析和研究元素如何渲染自身. 大 ...
- C# 基础知识系列- 14 IO篇 流的使用
0. 前言 继续之前的C# IO流,在前几篇小短片中我们大概看了下C# 的基础IO也对文件.目录和路径的操作有了一定的了解.这一篇开始,给大家演示一下流的各种操作.以文件流为例,一起来看看如何操作吧. ...
- <学习笔记: Django之初见>
Django 1. web框架介绍 具体介绍Django之前,必须先介绍WEB框架等概念. web框架: 别人已经设定好的一个web网站模板,你学习它的规则,然后“填空”或“修改”成你自己需要的样子. ...