什么是MongoDB数据库
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。(百度百科)
在处理海量数据的时候会比MySQL更有优势。爬虫如果上了一个量级,可能就会比较推荐使用MongoDB。
MongoDB的安装
vim /etc/yum.repos.d/mongodb-org-3.6.repo
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
yum install MongoDB
MongoDB基本配置
创建配置文件:mongod.cfg
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /home/kiosk/Desktop/data/mongod.log
# Where and how to store data.
storage:
dbPath: /home/kiosk/Desktop/data
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces.
#security:
logpath是日志的路径。dbpath是mongodb数据库的存储路径,port是mongodb的端口。
服务的启动:
mongod --config cfg配置文件所在的路径。
SQL术语与MongoDB术语对比
SQL术语 | MongoDB术语 | 解释 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
joins | joins | 表连接,MongoDB不支持 |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
MongoDB三元素:数据库、集合、文档。
文档(document):就是关系型数据库中的一行。文档是一个对象,由键值对构成,是json的扩展形式:
{'name':'coffee','age':'18'}
集合(collection):就是关系型数据库中的表。可以存储多个文档,结构可以不固定。如可以存储如下文档在一个集合中:
{'name':'coffee','age':'18'}
{'title':'floating','price':20}
{'name':'redhat','gender':'1'}
MongoDB基本操作命令:
1.db:查看当前的数据库。
2.show dbs:查看所有的数据库。
3.use 数据库名:切换数据库。如果数据库不存在,则创建一个。(创建完成后需要插入数据库才算创建成功)
4.db.dropDatabase():删除当前指向的数据库。
5.db.集合名.insert(value):添加数据到指定的集合中。
6.db.集合名.find():从指定的集合中查找数据。
更多命令请见:http://www.runoob.com/mongodb/mongodb-tutorial.html
Python操作MongoDB:
首先下载pymongo:
pip install pymongo
怎么连接MongoDB:
import pymongo
#获取连接的对象
client = pymongo.MongoClient('127.0.0.1',port=27017)
#获取数据库
db = client.user
#获取集合(表)
collection = db.qa
#插入一条数据到集合中
collection.insert_one({
'username':'coffee',
'password':'hello'
})
数据类型
类型 | 说明 |
---|---|
Object ID | 文档ID |
String | 字符串,必须是有效地UTF-8 |
Boolean | 存储一个布尔值 |
Integer | 整数可以是32位或64位,取绝于服务器 |
Double | 存储浮点值 |
Arrrays | 数组或列表,多个值存储到一个健 |
Object | 用于嵌入式文档,即一个值为一个文档 |
Null | 存储Null值 |
Timestamp | 时间戳,表示从1970-1-1到现在的总秒数 |
Date | 存储当前日期或时间地UNIX时间格式 |
操作MongoDB:
1.insert_one:加入一条文档数据到集合中。
collection.insert_one({
'username':'coffee',
'password':'hello'
})
2.insert_many:加入多条文档数据到集合中。
collection.insert_many([
{
"username":'abc',
'password':'111111'
},
{
"username":'bbb',
'password':'222222'
},
])
3.find_one:查找一条文档对象。
result = collection.find_one()
print(result)
# 或者是指定条件
result = collection.find_one({"username":"abc"})
print(result)
4.update_one:更新一条文档对象。
collection.update_one({"username":"abc"},{"$set":{"username":"aaa"}})
5.update_many:更新多条文档对象。
collection.update_many({"username":"abc"},{"$set":{"username":"aaa"}})
6.delete_one:删除一条文档对象。
collection.delete_one({"username":"abc"})
7.delete_many:删除多条文档对象。
collection.delete_one({"username":"abc"})