MongoDB

简介

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

主要特点

1
2
3
4
5
6
7
8
9
10
11
12
MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
你可以在MongoDB记录中设置任何属性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。
你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计算机网络中的其他节点上这就是所谓的分片。
Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段 。
Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
MapReduceMap函数调用emit(key,value)遍历集合中所有的记录,将keyvalue传给Reduce函数进行处理。
Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或mapreduce命令来执行MapReduce操作。
GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。

linux下安装MongoDB

1.创建仓库

1
vi /etc/yum.repos.d/mongodb-org-3.4.repo

2.把下面的内容复制到文件中 保存退出

1
2
3
4
5
6
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

3.yum安装

1
yum install -y mongodb-org

4.验证安装结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# rpm -qa |grep mongodb
mongodb-org-3.2.10-1.el7.x86_64
mongodb-org-mongos-3.2.10-1.el7.x86_64
mongodb-org-shell-3.2.10-1.el7.x86_64
mongodb-org-server-3.2.10-1.el7.x86_64
mongodb-org-tools-3.2.10-1.el7.x86_64

# rpm -ql mongodb-org-server
/etc/init.d/mongod
/etc/mongod.conf
/etc/sysconfig/mongod
/usr/bin/mongod
/usr/share/doc/mongodb-org-server-3.2.10
/usr/share/doc/mongodb-org-server-3.2.10/GNU-AGPL-3.0
/usr/share/doc/mongodb-org-server-3.2.10/MPL-2
/usr/share/doc/mongodb-org-server-3.2.10/README
/usr/share/doc/mongodb-org-server-3.2.10/THIRD-PARTY-NOTICES
/usr/share/man/man1/mongod.1
/var/lib/mongo
/var/log/mongodb
/var/log/mongodb/mongod.log
/var/run/mongodb

5.修改配置文件

1
vi /etc/mongod.conf

把bindIP改成 0.0.0.0所有的机器都可以访问

6.启动/关闭mogodb

启动mongo服务:

1
systemctl mongod start

关闭mongodb服务:

1
systemctl mongod stop

7.打开服务器端口号

因为服务器商不一样,所以要去对应的官方网站找到控制台,打开对应的端口号,mongodb端口号默认为27017

MongoDB简介

SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins 表连接,MongoBD不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键

MongoDB三元素

三元素:数据库、集合、文档

1.文档(document):就是关系型数据库中的一行,文档是一个对象,由键值对构成,是json的扩展形式:

1
{'name':'messiless','age':'25'}

2.集合(collection):就是关系型数据库中的表,可以储存多个文档,结构可以不稳定,如可与存储如下文档在一个集合中:

1
2
3
4
5
{
{'name':'messiless','age':'25'},
{'name':'jack','sex':'man'},
{'title':'dream'}
}

MongoDB基本操作命令

1.db:查看当前的数据库

2.show dbs:查看所有的数据库

3.use 数据库名:切换数据库。如果该数据库不存在,则会创建一个(创建完成后需要插入数据进数据库才算创建成功,否则下次进入会发现该数据库依旧不存在)

4.db.dropDatabase():删除当前指向的数据库

5.db.集合名.insert(value):添加数据到指定的集合中

6.db.集合名.find():从指定的集合中查找数据

7.db.集合名.drop():删除该集合

更多命令请见:https://www.runoob.com/mongodb/mongodb-tutorial.html

Python操作MongoDB

安装pymongo:

要用python操作mongodb,必须下载一个驱动程序,这个驱动程序就是pymongo

1
pip install pymongo

连接MongoDB

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import pymongo

# 获取连接mongo数据库连接,port端口默认是27017
client = pymongo.MongoClient('152.21.44.34', port=27017)
# 获取数据库,没有数据库也没关系。会自己创建
db = client.messi
# 获取数据库中的集合也就是mysql的表,这是获取的是test1集合
collection = db.test1
# 插入一条,使用insert_one(),插入很多条,使用insert_many()
collection.insert_one({'count':12,'country':'china'})
# 查找集合所有文档,使用find()
collection_find = collection.find()
for c in collection_find:
print(c)
# 查找集合第一条文档对象,使用find_one(),()里可以加过滤条件
collection.find_one()
collection.find_one({'count':12})
# 更新集合中的文档对象,使用update_one和updata_many方法,update_one是更改所匹配到的第一个,update_many是更改匹配到的所有
collection.update_one({'age': '25'}, {'$set': {'job': 'jjjjj'}})
collection.update_many({'age': '25'}, {'$set': {'job': 'jjjjj'}})
# 删除一条文档对象
collection.delete_one({'username':'messi'})
# 删除多条文档对象
collection.delte_many({'username':'messi'})