MongoDB

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。具有高性能、高可用性和自动扩展性。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象的BSON。字段值可以包含其他文档,数组及文档数组。MongoDB最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

安装MongoDB

MongoDB支持多种安装方式具体安装可以看官网更多安装方式,我这里只简单介绍源码包安装MongoDB社区版。

# 下载源码包curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.2.tgz# 解压到本地tar -zxvf mongodb-linux-x86_64-3.6.2.tgz# 创建mongodb目录mkdir -p /usr/local/mongodb# 复制到刚刚创建的目录cp -R -n mongodb-linux-x86_64-3.6.2/ /usr/local/mongodb# 定义环境变量,将mongodb bin目录添加进去export PATH=/bin:$PATH# 创建数据目录,默认为/data/db,如果你的目录不是这里,可以用--dbpath参数指定mkdir -p /data/db

安装就完成了,就这么简单。

概念解析

下表给出了各种SQL术语和概念,以及相应的MongoDB术语和概念。

下表展示了一些数据库可执行文件和相应的MongoDB可执行文件,注意这个表没有全部列出来。

从上面的图表可以看出,MongoDB中与关系型数据库不同的地方是引入了collection(集合)、document文档的概念.

文档

文档是MongoDB中数据的基本单元,是MongoDB的核心概念,很类似关系数据库中的行(记录)集合可以被看作没有模式的表(表)

collection(集合)

表示一组MongoDB文档。一个集合相当于一个RDBMS表。一个集合存在于一个数据库中。集合没有强制的模式,一个集合中的文档可以有不同的字段。通常,集合中的所有文档都有类似或相关的目的。

数据库

mongodb中多个文档构成集合,多个集合构成数据库。用于集合的物理容器。每个数据库在文件系统上都有自己的一组文件。一个MongoDB服务器通常有多个数据库。

mongo shell

是MongoDB的一个交互式JavaScript接口。您可以使用mongo shell查询和更新数据,并执行管理操作。

可以看下图理解上面的概念:

与python整合

安装PyMongo

PyMongo 是MongoDB的Python驱动程序,不要安装与PyMongo不兼容的第三方“bson”包。PyMongo有自己的bson软件包;

# 执行python -m pip install pymongo命令即可安装,结果如下:(myenv) [root@ansible myenv]$ python -m pip install pymongoCollecting pymongo Downloading pymongo-3.6.0-cp34-cp34m-manylinux1_x86_64.whl (379kB) 100% |████████████████████████████████| 389kB 73kB/s Installing collected packages: pymongoSuccessfully installed pymongo-3.6.0

安装完成后执行导入模块命令,查看是否成功:

>>> import pymongo>>> 

注意:要确定你的机器上安装了MongoDB。

建立连接与操作

# 导入客户端模块>>> from pymongo import MongoClient# 创建客户端实例 >>> client = MongoClient()# 这种方式与上面相同,上面不加参数默认连接的就是localhost和27017端口>>> client = MongoClient('localhost', 27017)# 还可以以URI方式连接>>> client = MongoClient('mongodb://localhost:27017/')

获取数据库

使用client实例中的属性样式访问数据库

>>> db = client.test_database

如果数据库名称是这样的'test-database',那么使用属性样式访问将不起作用,那么可以使用字典样式访问

>>>db = client['test-database']

获取collection(集合)

>>> collection = db.test_collection

或者(使用字典风格访问):

collection = db['test-collection']

文档

MongoDB中的数据使用json样式的文档表示(并存储)。在PyMongo中,我们使用字典来表示文档。例如,以下字典可能用于表示博客文章:

import datetimefrom pymongo import MongoClientclient = MongoClient()post = {"author": "Mike

mongodb导入bson文件_Python爬虫进阶教程(七):MongoDB数据库相关推荐

  1. python 协程爬虫_Python爬虫进阶教程(二):线程、协程

    简介 线程 线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID.程序计数器.寄存器集合和堆栈共同组成.线程的引入减小了程序并发执行时的开销,提高了操作系统的并发 ...

  2. deepin中mysql数据库的连接_Python爬虫进阶教程(八):MySQL 数据库连接

    PyMySQL介绍 PyMySql包含一个纯python的MySQL客户端库.PyMySQL的目标是成为MySQLdb的替代品,并在CPython.PyPy和IronPython上工作. 版本要求 p ...

  3. 爬虫进阶教程:极验(GEETEST)验证码破解教程

    原文链接及原作者:爬虫进阶教程:极验(GEETEST)验证码破解教程 | Jack Cui 一.前言 爬虫最大的敌人之一是什么?没错,验证码![Geetest]作为提供验证码服务的行家,市场占有率还是 ...

  4. MongoDB 教程七: MongoDB和PHP结合开发

    视频:MongoDB 教程七: MongoDB和PHP结合开发 Linux上安装 MongoDB PHP扩展 在终端上安装 你可以在linux中执行以下命令来安装MongoDB 的 PHP 扩展驱动 ...

  5. oracle导库需要删除原始库,导入dmp文件时,需要删除原有ORACLE数据库实例

    导入dmp文件时,对于已存在的数据库实例及表处理方式:删除实例. 1.以管理员身份登录 sqlplus / as sysdba 2.停止实例 shutdown abort; 执行结果:ORACLE i ...

  6. python 爬视频下载_Python爬虫进阶之爬取某视频并下载的实现

    这篇文章我们来讲一下在网站建设中,Python爬虫进阶之爬取某视频并下载的实现.本文对大家进行网站开发设计工作或者学习都有一定帮助,下面让我们进入正文. 这几天在家闲得无聊,意外的挖掘到了一个资源网站 ...

  7. python教程自带数据库_Python入门进阶教程-数据库操作

    Python数据库操作Python版本3.8.0,开发工具:Pycharm 建议本节在掌握了数据库相关操作后再进行学习 MySQL 是最流行的关系型数据库管理系统.本小节通过Python对MySQL数 ...

  8. 爬虫python入门_python爬虫入门教程有哪些?适合的只有这三个

    python爬虫是现在包括以后一种很重要的获取数据的方式. 当然,也因为网络爬虫本身也很有趣,所以很多人了解过一次爬虫后,就产生了浓厚的兴趣. 但是,想学python爬虫的话,应该看什么python爬 ...

  9. python爬虫requests库_python爬虫基础教程:requests库(二)代码实例

    get请求 简单使用 import requests ''' 想要学习Python?Python学习交流群:973783996满足你的需求,资料都已经上传群文件,可以自行下载! ''' respons ...

最新文章

  1. 图标尺寸规范_作为刚入门的UI设计师,你需要懂哪些设计规范?
  2. java中日期计算时间差,用java计算日期/时间差
  3. 中文名称:深入浅出SQL
  4. CSS3 矢量图标及背景精灵
  5. [编写高质量代码:改善java程序的151个建议]建议101 Class类
  6. Android Studio 3.2升级后的编译问题解决办法
  7. ADO.NET编程(4)根据条件查询DataTable的值
  8. 雷电模拟器 脚本_精灵盛典辅助雷电模拟器使用教程
  9. HAWQ技术解析(八) —— 大表分区
  10. HyperX Alloy Mars2游戏机械键盘,深耕专业电竞机游戏械键盘
  11. Gradle实践之自定义打包jar+Log开关自动关闭
  12. Gate 用户手册(一)总体概念
  13. 记录文件服务器的操作日志
  14. 00后的文化消费观是怎样的
  15. 人工智能和大数据分析之间,主要有什么区别
  16. 兄弟激光打印机错误代码
  17. 用Java构建股指期货交易系统
  18. 4 道路、轨道和公交——TransCAD多模式多用户交通分配模型
  19. 弄懂原型对象和原型链
  20. DS18B20温度报警系统设计

热门文章

  1. 在MVC框架上定时执行某种操作
  2. 4-2-串的堆存储结构-串-第4章-《数据结构》课本源码-严蔚敏吴伟民版
  3. Hibernate,get,load,find方法解析
  4. 利用RGB-D数据进行人体检测 带dataset
  5. Linux下显示IP地址所在地信息的小工具——nali
  6. 在Windows 2003 64位下ASP无法连接Access数据库的解决办法
  7. linux 9.0挂载驱动
  8. 有效管理要做的两件事:向上管理和向下负责
  9. 一份很不错的敏捷产品接口文档模板
  10. 为什么 P8 程序员的代码你写不出来?零拷贝了解一下