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 ...
随机推荐
- jQuery动态时钟
效果图: 引用的jQuery.js自己百度 代码: <!DOCTYPE html> <html> <head> <meta charset="utf ...
- 原生JS中获取位置的方案总结
获取鼠标当前位置 clientY.clientX: 鼠标当前位置 相对于 浏览器可视区域顶部.浏览器可视区域左部 的位置: pageY.pageX: 鼠标当前位置 相对于 文档顶部.文档左部的位置: ...
- python操作ftp文件
from ftplib import FTP ftp = FTP('ftp.abc.com') ftp.login(user='username', passwd='********') ftp.cw ...
- P5960 差分约束算法模板
差分约束 差分约束,一般用来解决有\(n\)个未知数,\(m\)个不等式方程的问题,形如: \[\begin{cases} \ x_{a_1}-x_{b_1}\leq y_1\\ \ x_{a_2}- ...
- muduo网络库源码学习————原子性操作Atomic.h
原子性操作可以做到比互斥锁更小的开销,在多线程编程中原子性操作是非常有用的.Atomic.h文件位于muduo/base下,代码如下: // Use of this source code is go ...
- B站弹幕系统架构——GOIM解读
架构图 说明: 1.logic启动http服务器, 接受http请求,用于将数据推送到kafka以及获取在线用户信息,websocket身份校验 2.comet组件起动webdocket/tcp服务, ...
- Lowest Common Ancestor of a Binary Search Tree(树中两个结点的最低公共祖先)
题目描述: Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in ...
- A. A Twisty Movement dp
https://codeforces.com/problemset/problem/933/A 这个是一个dp,但是我并没有看出来,然后也不太会写, 这种题一般应该要想到先预处理前缀和后缀,然后再进行 ...
- Re模块练习题
import re s = "1 -2*(60+(-40.35/5)-(-4*3))" # 获取所有数字 ret = re.findall(r"\d+", s) ...
- 批量下载B站视频
一个一个下载:https://www.zhihu.com/question/41367609 WSDAB的回答批量下载:https://www.zhihu.com/question/49793759( ...