
最近爬虫获取到的数据想存储到MongoDB中,先入门下咯\color{red}{MangoDB}
MongoDB Cloud is a platform for building modern, data-driven applications. Start with the data foundation of MongoDB, delivered as a fully managed cloud database, and get developing quickly with our application services.

MangoDB是一款基于C++开发的开源文档数据库,在数据库中数据是通过key-value的形式存储的,类似Python中的字典一样。
在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
数据库中常见的的概念在SQL和MongoDB中的对比
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
|---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
通过下面的例子进行解释

自己的系统是macOS,通过包管理工具Homebrew来安装
brew update
brew install mongodb
# 启动
mongod --config /usr/local/etc/mongod.conf # 是mongodcd ~/book/program # 指定安装路径
curl -O https://fastdl.mongodb.org/osx/mongodb-osx-x86_64-3.4.4.tgz # 下载安装包
tar –zxvf mongodb-osx-x86_64-3.4.4.tgz # 解压包
mkdir –p mongodb # 次级目录
cp –R –n mongodb-osx-x86_64-3.4.4/ mongodb # 复制文件到目录下~/book/program/mongodb/bin文件夹下面有各个重要的文件。手动添加2个配置文件:
~book/program/mongodb/bin/mongodb.conf中写入下面的内容:systemLog:
destination: file
path: log/mongo.log
logAppend: true
storage:
dbPath: data
net:
bindIp: 127.0.0.1在终端中先进入到MongoDB的文件夹中,再进行启动MongoDB:
cd book/program/mongodb/bin
mongod --config mongodb.conf启动之后控制台不会出现任何信息,因为日志Log已经写入到了文件中
C:\Program Files\MongoDB\bin中,将看到的全部文件复制到步骤4中C:\MongoDB文件夹,粘贴步骤3中的文件;同时创建2个文件夹:Data和LogC:\MongoDB\mongod.conf,内容和上面的相同systemLog:
destination: file
path: log\mongo.log
logAppend: true
storage:
dbPath: data
net:
bindIp: 127.0.0.1cmd,在命令窗口中启动mongod.exe --config mongod.conf常用的管理软件是RoboMongo,现在变成了Robo 3T,直接在官网上下载安装


在MongoDB中,数据是按照库database—集合collection—文档document的层级方式存储的,通过Python进行类比
文档是MongoDB中数据的基本单元,类似于关系型数据库中的行,它是键值对的一个有序集。
每个文档都有一个特殊的_id,这个键在文档所属的集合中是唯一的。
MongoDB中键值对不但区分类型,也区分大小写
{"foo": 3}
{"foo": "3"} # 二者不同下面两个也是不同的
{"Foo": 3}
{"foo": 3}集合可以看做是一个拥有动态模式的表。MongoDB的一个实例可以拥有多个相互独立的数据库,每个数据库都拥有自己的集合
PyMongo是Python对MongoDB操作的接口包,能够实现对MongoDB的增删改查和排序等操作
pip install pymongopymongo初始化数据库连接# 1-直接连接本地
from pymongo import MongoClient
client = MongoClient()
# 2-连接其他服务器:通过统一资源标识符URI-uniform resource identifier来连接地址
# 格式 mongodb://用户名:密码@服务器IP或域名:端口号
from pymongo import MongoClient
client = MongoClient('mongodb://peter:123456@192.168.1.12:27019')
# 3-没有设置权限验证,不需要用户名和密码
from pymongo import MongoClient
client = MongoClient('mongodb://192.168.1.12:27019')通常由两种方式来初始化与集合。
方式1:
Chart6和spider都不是变量名,是库和集合的名字
from pymongo import MongoClient
client = MongoClient()
database = client.Charter6 # Charter6是库的名字
collection = database.spider # spider是集合的名字方式2:
方括号中指定库名和集合名字
from pymongo import MongoClient
client = MongoClient()
database = client["Charter6"]
collection = db1['spider'] # 指定库名和集合名
# 方式2中指定变量
db_name = "Charter6"
col_name = "spider"
database = client[db_name]
collection = client[col_name]当存在多个数据库或者集合名字的时候,通过方式2,以列表的形式使用循环来操作
database_name_list = ['db1','db2','db3']
for db in database_name_list:
database = client[db]
collection = db.test默认情况下,MongoDB只允许本机访问,不允许外网访问。如果需要外网访问,修改配置文件:
systemLog:
destination: file
path: log\mongo.log
logAppend: true
storage:
dbPath: data
net:
#bindIp: 127.0.0.1 # 这里只允许本机
bindIp: 0.0.0.0 # 允许全部,或者指定某个地址