MongoDB快速入门指南与docker-compose快体验

MongoDB相对于RDBMS的优势

  1. 模式少 -MongoDB是一个文档数据库,其中一个集合包含不同的文档。一个文档之间的字段数,内容和文档大小可能会有所不同。
  2. 单个对象的结构清晰。
  3. 没有复杂的联接。
  4. 深入的查询能力。MongoDB支持使用与SQL几乎一样强大的基于文档的查询语言对文档进行动态查询。
  5. sql Tuning(优化)
  6. 易于扩展
  7. 不需要将应用程序对象转换/映射到数据库对象。
  8. 使用内部存储器存储(窗口式)工作集,从而可以更快地访问数据

RDBMS:关系数据库管理系统

为什么要使用MongoDB

  1. 面向文档的存储,BSON格式存储,即Binary JSON
  2. 单键索引、复合索引、多键索引、地理空间索引、全文本索引和哈希索引
  3. MongoDB实现高可用 主从复制
  4. 自动分片 auto sharding
  5. 丰富的查询
  6. 快速原地更新(fast in-place updates):大部分更新操作无需申请新空间
  7. MongoDB的专业支持map/reduce支持
  8. Gridfs:各种size大小的集群文件支持

在哪里使用MongoDB

  1. 大数据
  2. 内容管理和交付
  3. 移动和社交基础设施
  4. 用户数据管理
  5. 数据中心

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快体验的更多相关文章

  1. AngularJS快速入门指南18:Application

    是时候创建一个真正的AngularJS单页面应用程序了(SPA). 一个AngularJS应用程序示例 你已经了解了足够多的内容来创建第一个AngularJS应用程序: My Note Save Cl ...

  2. CI Weekly #21 | iOS 持续集成快速入门指南

    搭建 iOS 持续集成环境要多久?每个 iOSer 都有不同的答案.这次我们整理了 flow.ci 的 iOS 持续集成的相关文档和最佳实践,希望帮你更快地完成构建.更新文档见: flow.ci iO ...

  3. [转] Spark快速入门指南 – Spark安装与基础使用

    [From] https://blog.csdn.net/w405722907/article/details/77943331 Spark快速入门指南 – Spark安装与基础使用 2017年09月 ...

  4. KNIME快速入门指南

    一.介绍  KNIME Analytics Platform是用于创建数据科学应用程序和服务的开源软件.KNIME直观,开放,不断整合新的开发,使人们可以理解数据,设计数据科学工作流程和可重用组件. ...

  5. 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)

    今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...

  6. AngularJS快速入门指南20:快速参考

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

  7. AngularJS快速入门指南19:示例代码

    本文给出的大部分示例都可以直接运行,通过点击运行按钮来查看结果,同时支持在线编辑代码. <div ng-app=""> <p>Name: <input ...

  8. AngularJS快速入门指南17:Includes

    使用AngularJS,你可以在HTML中包含其它的HTML文件. 在HTML中包含其它HTML文件? 当前的HTML文档还不支持该功能.不过W3C建议在后续的HTML版本中增加HTML import ...

  9. AngularJS快速入门指南16:Bootstrap

    thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...

随机推荐

  1. 【DNS域名解析命令】 nslookup

    1. nslookup作用 nslookup用于查询DNS的记录,查询域名解析是否正常,在网络故障时用来诊断网络问题 nslookup - query Internet name servers in ...

  2. struts2验证码

    验证码大多是jsp,servlet写的. 我拿来主义了, 再自己完善了一下(我一直努力想要站在巨人的肩膀)   首先是页面 test.jsp <%@ page contentType=" ...

  3. 实战经验:CentOS 7.3安装完整开发环境

    系统版本 CentOS 7.3(1611) 安装开发环境 1) 通过group安装 # yum groups mark install “Development Tools” # yum groups ...

  4. inotifywait实现文件监控

    应用场景文件监控可以配合rsync实现文件自动同步,例如监听某个目录,当文件变化时,使用rsync命令将变化的文件同步.(可用于代码自动发布) 安装noitify下载地址:http://github. ...

  5. C++类的开发实战--班级成绩管理系统

    #include<bits/stdc++.h> using namespace std; struct birth { int year,month,day; }; struct grad ...

  6. Jmeter 数据库测试参数化

    1.JDBC Request 参数化 方法一.Jmeter 参数化,在 sql query 中使用变量 Jmeter 参数化,使用 csv 参数化 sql query 中使用 ${变量名} 引用 方法 ...

  7. vue js手机端滑到某一个位置时固定位置显示

    1.HTML <div id="searchBar"><ul class="items_filter" :class="search ...

  8. Objective-C对象模型

    Objective-C是一门面向对象的编程语言,每一个对象都是一个类的实例.XCode中打开objc.h可以看到如下定义: /// An opaque type that represents an ...

  9. Java 面向对象和封装

    目录 面向对象思想的概述 类和对象的关系 什么是类 什么是对象 类和对象的关系 局部变量和成员变量的区别 this关键字 构造方法 一个标准的类 面向对象思想的概述 面向过程:当需要实现一个功能的时候 ...

  10. spring学习笔记(五)自定义spring-boot-starter(1)

    在我们开始定义之前我们应该知道springBoot的大致运行原理,我们从springBoot启动类开始.首先我们看下这个注解,@SpringBootApplication,跟进去可以看到如下代码: @ ...