MongoDB学习【一】—MongoDB简介和安装
一、MongoDB简介
1.MongoDB是什么
MongoDB是一款强大、灵活、且易于扩展的通用型数据库,MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
2.MongoDB的特点
1.易用性
MongoDB是由C++编写的,是一个基于分布式文件存储的开源数据库系统,它不是关系型数据库。在高负载的情况下,添加更多的节点,可以保证服务器的性能。
MongoDB是一个面向文档(document-oriented)的数据库,而不是关系型数据库。
不采用关系型主要是为了获得更好得扩展性。当然还有一些其他好处,与关系数据库相比,面向文档的数据库不再有“行“(row) 的概念取而代之的是更为灵活的“文档”(document)模型。
通过在文档中嵌入文档和数组,面向文档的方法能够仅使用一条记录 来表现复杂的层级关系,这与现代的面向对象语言的开发者对数据的看法一致。
另外,不再有预定义模式(predefined schema):文档的键(key)和值(value)不再是固定的类型和大小。由于没有固定的模式,根据需要添加或删除字段变得更容易了。
通常由于开发者能够进行快速迭代,所以开发进程得以加快。而且,实验更容易进行。开发者能尝试大量的数据模型,从中选一个最好的。
2.易扩展型
应用程序数据集的大小正在以不可思议的速度增长。随着可用带宽的增长和存储器价格的下降,即使是一个小规模的应用程序,需要存储的数据量也可能大的惊人,甚至超出了很多数据库的处理能力。过去非常罕见的T级数据,现在已经是司空见惯了。
由于需要存储的数据量不断增长,开发者面临一个问题:应该如何扩展数据库,分为纵向扩展和横向扩展,纵向扩展是最省力的做法,但缺点是大型机一般都非常贵,而且当数据量达到机器的物理极限时,花再多的钱也买不到更强的机器了,此时选择横向扩展更为合适,但横向扩展带来的另外一个问题就是需要管理的机器太多。
MongoDB的设计采用横向扩展。面向文档的数据模型使它能很容易地在多台服务器之间进行数据分割。MongoDB能够自动处理跨集群的数据和负载,自动重新分配文档,以及将用户的请求路由到正确的机器上。这样,开发者能够集中精力编写应用程序,而不需要考虑如何扩展的问题。
如果一个集群需要更大的容量,只需要向集群添加新服务器,MongoDB就会自动将现有的数据向新服务器传送。
3.丰富的功能
MongoDB作为一款通用型数据库,除了能够创建、读取、更新和删除数据之外,还提供了一系列不断扩展的独特功能。
索引
支持通用二级索引,允许多种快速查询,且提供唯一索引、复合索引、地理空间索引、全文索引
聚合
支持聚合管道,用户能通过简单的片段创建复杂的集合,并通过数据库自动优化
特殊的集合类型
支持存在时间有限的集合,适用于那些将在某个时刻过期的数据,如会话session。类似地,MongoDB也支持固定大小的集合 ,用于保存近期数据,如日志
文件存储
支持一种非常易用的协议,用于存储大文件和文件元数据。MongoDB并不具备一些在关系型数据库中很普遍的功能, 如链接join和复杂的多行事务。省略这些的功能是处于架构上的考虑,或者说为了得到更好的扩展性,因为在分布式系统中这两个功能难以高效地实现
4.卓越的性能
MongoDB的一个主要目标是提供卓越的性能,这很大程度上决定了MongoDB的设计。MongoDB把尽可能多的内存用作缓存cache, 视图为每次查询自动选择正确的索引。
总之各方面的设计都旨在保持它的高性能,虽然MongoDB非常强大并试图保留关系型数据库的很多特性,但它并不追求具备关系型数据库的所有功能。
只要有可能,数据库服务器就会将处理逻辑交给客户端。这种精简方式的设计是MongoDB能够实现如此高性能的原因之一。
二、MongoDB的安装
1.下载安装
1.下载安装包
MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:https://www.mongodb.com/download-center#community
2.安装
指定安装路径,我这里安装在D:\ProgramFiles\MongoDB,添加D:\ProgramFiles\MongoDB\bin到环境变量中。
3.新建目录与文件夹
D:\ProgramFiles\MongoDB\data\db
D:\ProgramFiles\MongoDB\log\mongod.log
4.新建配置文件mongo.cfg,参考https://docs.mongodb.com/manual/reference/configuration-options/
systemLog:
destination: file
path: "D:\ProgramFiles\MongoDB\log\mongod.log"
logAppend: true
storage:
journal:
enabled: true
dbPath: "D:\ProgramFiles\MongoDB\data\db"
net:
bindIp: 0.0.0.0
port:
setParameter:
enableLocalhostAuthBypass: false
5.制作系统服务
mongod --config "D:\ProgramFiles\MongoDB\mongod.cfg" --bind_ip 0.0.0.0 --install
或者直接在命令行指定配置
mongod --bind_ip 0.0.0.0 --port --logpath D:\ProgramFiles\MongoDB\log\mongod.log --logappend --dbpath D:\ProgramFiles\MongoDB\data\db --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install
6.启动MongoDB服务
net start MongoDB
net stop MongoDB
7.登录MongoDB
mongo
链接:http://www.runoob.com/mongodb/mongodb-window-install.html
当没有账号密码登录的时候,默认就是管理员登录。,因为刚刚做系统服务install的时候没有指定
--auth(没有指定则没有权限认证这一说),(相当于mysql跳过授权表启动一样)
2.帐号管理
账号管理:https://docs.mongodb.com/master/tutorial/enable-authentication/
1.创建有权限的用户
use admin
db.createUser(
{
user: "root", # 这个root可以随便写
pwd: "",
roles: [{role: "root", db: "admin"}] # 权限,role是root说明是管理员,
}
)
use test
db.createUser(
{
user: "egon",
pwd: "",
roles: [
{role: "readWrite", db: "test"}, # 针对test库有读写权限,操作自己的库有读写权限
{role: "read", db: "db1"}
] # 针对db1库读权限,操作其他库有读权限
}
)
2.重启数据库
mongod --remove
mongod --config "C:\mongodb\mongod.cfg" --bind_ip 0.0.0.0 --install --auth
# 或者
mongod --bind_ip 0.0.0.0 --port --logpath D:\MongoDB\log\mongod.log --logappend --dbpath
D:\MongoDB\data\db --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install --auth
3.登录,注意使用双引号而非单引号
# 方式一
mongo --port -u "root" -p "" --authenticationDatabase "admin"
# 方式二:在登录之后用db.auth("账号","密码")登录
mongo
use admin
db.auth("root","")
推荐博客https://www.cnblogs.com/zhoujinyi/p/4610050.html
创建账号密码+开启认证机制
3.命令行shell
.mongo 127.0.0.1:/config # 连接到任何数据库config
.mongo --nodb # 不连接到任何数据库
.启动之后,在需要时运行new Mongo(hostname)命令就可以连接到想要的mongod了
> conn=new Mongo('127.0.0.1:27017')
connection to 127.0.0.1:
> db=conn.getDB('admin')
admin
.help查看帮助
.mongo是一个简化的JavaScript shell,是可以执行JavaScript脚本的
MongoDB学习【一】—MongoDB简介和安装的更多相关文章
- MongoDB学习笔记-01 简介、安装
MongoDB简介 MongoDB是一种强大.灵活.可拓展的存储方式.是一个面向文档(相当于"行"的概念)的数据库. 可拓展:通过添加服务器而增加存储量. Windows下安装 版 ...
- MongoDB学习笔记:MongoDB 数据库的命名、设计规范
MongoDB学习笔记:MongoDB 数据库的命名.设计规范 第一部分,我们先说命名规范. 文档 设计约束 UTF-8 字符 不能包含 \0 字符(空字符),这个字符标识建的结尾 . 和 $ ...
- MongoDB入门学习笔记之简介与安装配置
一.MongoDB简介 1.文档数据库 MongoDB是一款开源的文档型非关系数据库,具有高性能.高可靠性和自动扩展等特点.MongoDB中的每一条记录是一个文档,其数据存储结构为键/值对,类似JSO ...
- MongoDB 学习笔记(一)—— 安装入门
注:我的环境是win7 32位. 下载安装 http://www.mongodb.org/downloads 解压即可.这里我重命名“mongodb”,存放的目录为E:\mongodb. 新建数据文件 ...
- MongoDB学习笔记一—简介
MongoDB简介 MongoDB在功能和复杂性之间取得了很好的平衡,并且大大简化了原先十分复杂的任务,它具备支撑今天主流web应用的关键功能:索引.复制.分片.丰富的查询语法,特别灵活的数据模型.与 ...
- mongoDB学习笔记:了解与安装
初次使用mongoDB是在2013年,项目组为了新产品的研发,使用了mongoDB,作为项目组的一名测试员,也就跟着学起来了. 1.了解mongoDB Mongo DB ,是目前在IT行业非常流行的一 ...
- MongoDB学习笔记(一)安装配置
文档存储:文档存储一般用类似json的格式存储,存储的内容是文档型的. MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成.MongoDB 文档类似于 JSON ...
- [MongoDB]学习笔记--Linux 安装和运行MongoDB
背景知识 MongoDB 是用C++写的, 开源的, NoSQL(Not Only SQL)文档数据库. 特点:high performance(高性能), high availability(高可靠 ...
- MongoDB(一)-- 简介、安装、CRUD
一.Mongodb简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为WEB应用提供可 ...
- MongoDB学习之(一)安装
第一步:下载MongoDB的安装版进行安装 https://pan.baidu.com/s/1X3hIqORJ61TCG1UJ_yr6ag 由于第二次安装出现一些问题,所有还是记录一下,免得以后踩坑. ...
随机推荐
- 基于 Redux + Redux Persist 进行状态管理的 Flutter 应用示例
好久没在 SegmentFault 写东西,唉,也不知道 是忙还是懒,以后有时间 再慢慢写起来吧,最近开始学点新东西,有的写了,个人博客跟这里同步. 一直都在自己的 React Native 应用中使 ...
- git 中 HEAD detached from 802e836
head指针处于游离状态,需要建立一个分支然后将它合并到master分支,最后删除那个临时分支即可. 详情参见:https://www.jianshu.com/p/fdd3c2d020d7
- (新手入门,学习笔记)通过NPM进行Vue.js的安装
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,本文只介绍如何通过NPM进行安装Vue.js NodeJS官方网站:http://nodejs.cn/downlo ...
- 编程的智慧(王垠)(http://www.cocoachina.com/programmer/20151125/14410.html)
编程是一件创造性的工作,是一门艺术.精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的“智慧”,并不是号称三天瘦二十斤的减肥药,它并不能代替你自己的勤奋.然而我希望它能给迷惑中的人们指出一些正确 ...
- FPGA引脚锁定 注意err和高阻状态
1.fpga没有用的的管脚一定要设置成高阻状态设置路径如下: Assignmen->Device->Device&Pin Option->Unused pins->As ...
- CCPC-Wannafly Winter Camp Day1 流流流动 (树形dp)
题目描述 喜欢数学的wlswls最近被萎住了. 现在他一共有1...n1...n这么多数字,取数字ii会得到f[i]f[i]的收益.数字之间有些边,对于所有的i(i != 1)i(i!=1),若ii为 ...
- 生成对抗网络 Generative Adversarial Networks
转自:https://zhuanlan.zhihu.com/p/26499443 生成对抗网络GAN是由蒙特利尔大学Ian Goodfellow教授和他的学生在2014年提出的机器学习架构. 要全面理 ...
- 1125. Chain the Ropes (25)
Given some segments of rope, you are supposed to chain them into one rope. Each time you may only fo ...
- 路径path知识点
1. 获取当前文件的路径 test.py os.path.abspath(path) # 返回当前文件运行的绝对路径 print("程序的绝对路径是",os.path.abspat ...
- kafka完全分布式搭建(2.12版)
1.下载解压 tar -xvf kafka_2.12-1.0.0.tgz 2.进入config目录下,修改server.propeties文件 broker.id=0 #当前server编号 port ...