2020-03-18

MongoDB数据库

简介:

MongoDB 是一个基于分布式文件存储的 NoSQL 数据库。在处理海量数据的时候会比 MySQL 更有优
势。爬虫如果上了一个量级,可能就会比较推荐使用 MongoDB ,当然没有上量的数据也完全可以
使用 MongoDB 来存储数据。因此学会使用 MongoDB 也是爬虫开发工程师必须掌握的一个技能。

Windows 下安装 MongoDB 数据库:

在官网下载 MongoDB 数据库。是一个 msi 文件。官网地址  如下:https://www.mongodb.com/download-center?ct=atlasheader#community 

然后双击进行安装: 

运行 MongoDB :

1. 创建数据目录: 启动 MongoDB 之前,首先要给他指定一个数据存储的路径。比如我
在 MongoDB 的安装路径下创建一个 data 文件夹,专门用来存储数据
的。 D:\ProgramApp\mongodb\data 。
2. 把 mongodb 的 bin 目录加入到环境变量中。方便后期调用。
3. 执行命令 mongod --dbpath D:\ProgramApp\mongodb\data 启动。

连接 MongoDB :

在环境变量设置好的前提下,使用以下命令 mongo 就可以进入到 mongo 的操作终端了。

使用 Compass 软件连接 MongoDB :

Compass 是一个图形化的操作 MongoDB 的客户端。使用他来操作会更加方便。

将 MongoDB 制作成 windows 服务:

启动 mongodb 后,如果想让 mongodb 一直运行,那么这个终端便不能关闭,而且每次运行的时候
还需要指定 data 的路径。因此我们可以将 mongodb 制作成一个服务,以后就通过一行命令就可
以运行了。以下将讲解如何制作服务
  1. 创建配置文件:在 mongodb 安装的路径下创建配置文件 mongod.cfg (路径和名字不是必须和

我这的一样),然后在配置文件中添加以下代码:

logpath=D:\ProgramApp\mongodb\data\log\mongod.log
dbpath=D:\ProgramApp\mongodb\data\db
logpath 是日志的路径。 dbpath 是 mongodb 数据库的存储路径。
  1. 安装 mongodb 服务:

使用以下命令即可将 mongodb 安装成一个服务:

mongod --config "cfg配置文件所在路径" --install
比如:
mongod --config "D:\ProgramApp\mongodb\mongod.cfg" --instal
  1. 启动 mongodb :

    net start mongodb 
    
  2. 关闭 mongodb :

     net stop mongodb 
    
  3. 移除 mongodb :

     "D:\ProgramApp\mongodb\bin\mongod.exe" --remove 
    

MongoDB 概念介绍:

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

MongoDB 三元素:

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

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

是 json 的扩展形式:

{'name':'abc','gender':'1'}
  1. 集合(collection):就是关系型数据库中的表。可以存储多个文档,结构可以不固定。如可

以存储如下文档在一个集合中:

{"name":"abc","gender":"1"}
{"name":"xxx","age":18}
{"title":'yyy','price':20.9}

MongoDB基本操作命令:

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

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

  3. use 数据库名 :切换数据库。如果数据库不存在,则创建一个。(创建完成后需要插入数据

库才算创建成功)

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

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

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

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

Python操作 MongoDB :

数据类型:

类型 说明
Object ID 文档ID
String 字符串,最常用,必须是有效的UTF-8
Boolean 存储一个布尔值,true或false
Integer 整数可以是32位或64位,这取决于服务器
Double 存储浮点值
Arrays 数组或列表,多个值存储到一个键
Object 用于嵌入式的文档,即一个值为一个文档
Null 存储Null值
Timestamp 时间戳,表示从1970-1-1到现在的总秒数
Date 存储当前日期或时间的UNIX时间格式

安装 pymongo :

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

pip install pymongo

连接 MongoDB :

import pymongo
# 获取连接的对象
client = pymongo.MongoClient('127.0.0.1',port=27017)
# 获取数据库
db = client.zhihu
# 获取集合(表)
collection = db.qa
# 插入一条数据到集合中
collection.insert_one({
    "username":"abc",
    "password":'hello'
})

操作 MongoDB 的主要方法如下:

  1. insert_one :加入一条文档数据到集合中。示例代码如下:

    collection.insert_one({
        "username":"abc",
        "password":'hello'
    })
    
  1. insert_many :加入多条文档数据到集合中。
collection.insert_many([
    {
        "username":'abc',
        'password':'111111'
    },
    {
        "username":'bbb',
        'password':'222222'
    },
])
  1. find_one :查找一条文档对象。
result = collection.find_one()
print(result)
# 或者是指定条件
result = collection.find_one({"username":"abc"})
print(result)
  1. update_one :更新一条文档对象。
collection.update_one({"username":"abc"},{"$set":{"username":"aaa"}})
  1. update_many :更新多条文档对象。
collection.update_many({"username":"abc"},{"$set":{"username":"aaa"}})
  1. delete_one :删除一条文档对象。
collection.delete_one({"username":"abc"})
  1. delete_many :删除多条文档对象。
collection.delete_many({"username":"abc"})
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容

  • 一、MongoDB简介 1.概述 ​ MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。旨在为WE...
    郑元吉阅读 978评论 0 2
  • 简介 MongoDB 是一个基于分布式文件存储的NoSQL数据库 由C++语言编写,运行稳定,性能高 旨在为 WE...
    大熊_7d48阅读 36,930评论 1 9
  • 一、MongoDB简介 概述MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。旨在为WEB应用提供...
    王梓懿_1fbc阅读 493评论 0 3
  • 一、MongoDB简介 概述MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。旨在为WEB应用提供...
    慕杨_阅读 557评论 0 4
  • 一、MongoDB简介 概述MongoDB是一个基于分布式文件存储的数据库,由C++语言编写。旨在为WEB应用提供...
    EndEvent阅读 1,163评论 1 4