MongoDB 是一个是一个基于分布式文件存储的数据库,介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
MongoDB安装很简单,无需下载源文件,可以直接用apt-get命令进行安装。如果网速太差,并且已经下载MongoDB的安装包时,可以离线方式安装,参考Ubuntu下MongoDB安装与使用教程(离线安装方式)。推荐使用apt-get命令进行在线安装,可以避免很多莫名其妙的问题。
以下命令

name: 要创建的集合名称
options: 可选参数, 指定有关内存大小及索引的选项
options 可以是如下参数:
在插入文档时,MongoDB 首先检查固定集合的 size 字段,然后检查 max 字段。
实例

前 4 个字节表示创建 unix时间戳,格林尼治时间 UTC 时间,比北京时间晚了 8 个小时
接下来的 3 个字节是机器标识码
紧接的两个字节由进程 id 组成 PID
最后三个字节是随机数
MongoDB 中存储的文档必须有一个 _id 键。这个键的值可以是任何类型的,默认是个 ObjectId 对象
由于 ObjectId 中保存了创建的时间戳,所以你不需要为你的文档保存时间戳字段,你可以通过 getTimestamp 函数来获取文档的创建时间:
MongoDB 与 RDBMS Where 语句比较
MongoDB AND 条件
MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。
语法格式如下:
实例在后台创建索引:
管道的概念
管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。
MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。
表达式:处理输入文档并输出。表达式是无状态的,只能用于计算当前聚合管道的文档,不能处理其它的文档。
这里我们介绍一下聚合框架中常用的几个操作:
project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。 p r o j e c t : 修 改 输 入 文 档 的 结 构 。 可 以 用 来 重 命 名 、 增 加 或 删 除 域 , 也 可 以 用 于 创 建 计 算 结 果 以 及 嵌 套 文 档 。 match:用于过滤数据,只输出符合条件的文档。 match使用MongoDB的标准查询操作。 m a t c h 使 用 M o n g o D B 的 标 准 查 询 操 作 。 limit:用来限制MongoDB聚合管道返回的文档数。
skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。 s k i p : 在 聚 合 管 道 中 跳 过 指 定 数 量 的 文 档 , 并 返 回 余 下 的 文 档 。 unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
group:将集合中的文档分组,可用于统计结果。 g r o u p : 将 集 合 中 的 文 档 分 组 , 可 用 于 统 计 结 果 。 sort:将输入文档排序后输出。
$geoNear:输出接近某一地理位置的有序文档。
管道操作符实例
1、$project实例
db.article.aggregate(
{ $project : {
title : 1 ,
author : 1 ,
}}
);
这样的话结果中就只还有_id,tilte和author三个字段了,默认情况下_id字段是被包含的,如果要想不包含_id话可以这样:
db.article.aggregate(
{ $project : {
_id : 0 ,
title : 1 ,
author : 1
}});
2.$match实例
db.articles.aggregate( [
{ $match : { score : { $gt : 70, $lte : 90 } } },
{ $group: { _id: null, count: { $sum: 1 } } }
] );
$match用于获取分数大于70小于或等于90记录,然后将符合条件的记录送到下一阶段$group管道操作符进行处理。
3.$skip实例
db.article.aggregate(
{ $skip : 5 });
经过$skip管道操作符处理后,前五个文档被”过滤”掉。
安装PyMongo模块
pip install pymongo
使用MongoClient建立连接
from pymongo import MongoClient#链接格式mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]mongodb:// 这是固定的格式,必须要指定。username:password@ 可选项,如果设置,在连接数据库服务器之后,驱动都会尝试登陆这个数据库host1 必须的指定至少一个host, host1 是这个URI唯一要填写的。它指定了要连接服务器的地址。如果要连接复制集,请指定多个主机地址。portX 可选的指定端口,如果不填,默认为27017/database 如果指定username:password@,连接并验证登陆指定数据库。若不指定,默认打开 test 数据库。?options 是连接选项。如果不使用/database,则前面需要加上/。所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开# 以下为三种建立无验证连接的方式#client = MongoClient()#client = MongoClient('localhost', 27017)#client = MongoClient('mongodb://localhost:27017/')#建立验证连接使用用户 admin 使用密码 123456 连接到本地的 MongoDB 服务上。输出结果如下所示:> mongodb://admin:123456@localhost/... 使用用户名和密码连接登陆到指定数据库,格式如下:mongodb://admin:123456@localhost/test获取数据库
# 以下是两种获取数据库的方式db = client.pythondbdb = client['python-db']
获取集合
# 以下是两种获取集合的方式collection = db.python_collectioncollection = db['python-collection']
上述任何命令都没有在MongoDB服务器上实际执行任何操作。当第一个文档插入集合时才创建集合和数据库。
插入文档
#!/usr/bin/python3#coding=utf-8import datetimefrom pymongo import MongoClientclient = MongoClient()db = client.pythondbposts = db.postspost = {"author": "Maxsu", "text": "My first blog post!", "tags": ["mongodb", "python", "pymongo"], "date": datetime.datetime.utcnow()}posts.insert(post)# 批量插入,参数为listposts.insert_many(new_posts)
查找文档
#!/usr/bin/python3#coding=utf-8import datetimeimport pprintfrom pymongo import MongoClientclient = MongoClient()db = client.pythondbposts = db.posts# 查找单个文档print(posts.find_one())# 查找多个文档for post in posts.find():print(post)# 计数统计print(posts.count())print(posts.find({"author": "Maxsu"}).count())到此这篇关于详解MongoDB安装使用并实现Python操作数据库的步骤 的文章就介绍到这了,更多相关MongoDB安装使用内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!