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 ...
随机推荐
- 二、Vue基础语法
六:Vue的v-bind指令作用:绑定标签上的所有属性其简写 ":" 6.1: 例如:<p v-bind:id="test">Hello wo ...
- Java和php中的try-catch分析
为什么80%的码农都做不了架构师?>>> 描述:对一个健壮的系统来讲,异常处理是必不可少的一部分,针对异常的管理,主要就是异常的捕获和处理操作,然而在php中使用try-catc ...
- Python3的日期和时间
2019独角兽企业重金招聘Python工程师标准>>> python 中处理日期时间数据通常使用datetime和time库 因为这两个库中的一些功能有些重复,所以,首先我们来比较一 ...
- Java中的集合Queue
2019独角兽企业重金招聘Python工程师标准>>> package com.zhaogang.test; import org.junit.Test; import java.u ...
- Error: Can't find Python executable "G:\Python27"
错误如题,node-gyp官网介绍不够详细,应设置python.exe的具体绝对路径,如下所示: npm config set python G:\Python27\python.exe 转载于:ht ...
- 腾讯技术工程 | 基于Prophet的时间序列预测
预测未来永远是一件让人兴奋而又神奇的事.为此,人们研究了许多时间序列预测模型.然而,大部分的时间序列模型都因为预测的问题过于复杂而效果不理想.这是因为时间序列预测不光需要大量的统计知识,更重要的是它需 ...
- 一张图告诉你E-R图怎么画
E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型.属性和联系的方法,用来描述现实世界的概念模型. 它是描述现实世界关系概念模型的有效方法.是表示概 ...
- 网络流--最大流--EK模板
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...
- Android EXCEL 解析 xls 和 xlsx,方法其实很简单
前言 Excel 解析,一般来说是在服务端进行的,但是如果移动端要实现解析Excel的功能,那也是有实现的方法的. 不过由于Android 原生用Java/Kotlin实现,所以也可以参考服务端解析E ...
- PUBG 1V3 线段树扫描线
PUBG 1V3 这个题目我觉得好难写啊. 感觉自己码力不太行啊. 题目大意是,给你n个人,n个人组成m个队伍,每个队伍最多4个人. 然后给你每一个人的位置队伍信息还有攻击范围. 问当一个队伍剩下一个 ...