开发者社区> 技术小甜> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

python学习笔记操作mongodb(九)

简介:
+关注继续查看

一、安装Pymongo

安装Python的MongoDB模块PyMongo

  1. 源码安装:

下载地址:

https://pypi.python.org/packages/69/8a/2384c55f4bd494eeb6104a9b35c36714ba1178dcd08ee5a73b92eed3d8c1/pymongo-3.6.0.tar.gz#md5=2f64fa7691c77535b72050704cc12afb

解压安装包,进入解压目录执行安装命令

python setup.py install

  1. pip安装

pip install pymongo
或者
easy_install pymongo

二、使用Pymongo操作Mongodb

  1. 导入模块

>>> Import pymongo

  1. 建立MongodbClient的连接

>>> client = pymongo.MongoClient("localhost",27017)
或者
>>> client = pymongo.MongoClient(“mongodb://localhost:27017/”)

  1. 得到数据库
db=client.mydb
或者
db=client[“mydb”]
  1. 得到集合
books=db.my_collection
或者
books=db[“my_collection”]

查询

查询一条数据,使用find_one():

>>> books.find_one()
{u'lang': u'Python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'}

查询所有数据,使用find():

>>> for i in books.find():
...     print i
...
{u'lang': u'Python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'}
{u'lang': u'english', u'title': u'physics', u'_id': ObjectId('554f28f465db941152e6df8b'), u'author': u'Newton'}

在 books 引用的对象中有 find() 方法,它返回的是一个可迭代对象,包含着集合中所有的文档。

条件查询:

>>> books.find_one(“lang”:”Python”)
{u'lang': u'Python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'}

查询结果排序:

>>> for i in books.find().sort("title", pymongo.ASCENDING):
...     print i
...
{u'lang': u'python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'}
{u'lang': u'english', u'title': u'physics', u'_id': ObjectId('554f28f465db941152e6df8b'), u'author': u'Newton'}

这是按照"title"的值的升序排列的,注意 sort() 中的第二个参数,意思是升序排列。如果按照降序,就需要将参数修改为 Pymongo.DESCEDING,也可以指定多个排序键。

统计文档数

>>> books.find().count()
2

当前有2条数据

mongodb 中的每个文档,本质上都是“键值对”的类字典结构。这种结构,一经 Python 读出来,就可以用字典中的各种方法来操作。与此类似的还有一个名为 json 的东西,可以阅读本教程第贰季进阶的第陆章模块中的《标准库(8)。但是,如果用 Python 读过来之后,无法直接用 json 模块中的 json.dumps() 方法操作文档。其中一种解决方法就是将文档中的'_id'键值对删除(例如:del doc['_id']),然后使用 json.dumps() 即可。读者也可是使用 json_util 模块,因为它是“Tools for using Python’s json module with BSON documents”,请阅读http://api.mongodb.org/Python/current/api/bson/json_util.html中的模块使用说明。

插入数据

插入1条数据:

>>> b2 = {"title":"physics", "author":"Newton", "lang":"english"}
>>> books.insert(b2)
ObjectId('554f28f465db941152e6df8b')

批量插入数据:

>>> n1 = {"title":"java", "name":"Bush"}
>>> n2 = {"title":"fortran", "name":"John Warner Backus"}
>>> n3 = {"title":"lisp", "name":"John McCarthy"}
>>> n = [n1, n2, n3]
>>> n
[{'name': 'Bush', 'title': 'java'}, {'name': 'John Warner Backus', 'title': 'fortran'}, {'name': 'John McCarthy', 'title': 'lisp'}]
>>> books.insert(n)
[ObjectId('554f30be65db941152e6df8d'), ObjectId('554f30be65db941152e6df8e'), ObjectId('554f30be65db941152e6df8f')]

更新

对于已有数据,进行更新,是数据库中常用的操作。比如,要更新 name 为 Hertz 那个文档:

>>> books.update({"name":"Hertz"}, {"$set": {"title":"new physics", "author":"Hertz"}})
{u'updatedExisting': True, u'connectionId': 4, u'ok': 1.0, u'err': None, u'n': 1}
>>> books.find_one({"author":"Hertz"})
{u'title': u'new physics', u'_id': ObjectId('554f2b4565db941152e6df8c'), u'name': u'Hertz', u'author': u'Hertz'}

在更新的时候,用了一个 $set 修改器,它可以用来指定键值,如果键不存在,就会创建。

关于修改器,不仅仅是这一个,还有别的呢。

修改器 描述
$set 用来指定一个键的值。如果不存在则创建它
$unset 完全删除某个键
$inc 增加已有键的值,不存在则创建(只能用于增加整数、长整数、双精度浮点数)
$push 数组修改器只能操作值为数组,存在 key 在值末尾增加一个元素,不存在则创建一个数组

删除

删除可以用 remove() 方法:

>>> books.remove({"name":"Bush"})
{u'connectionId': 4, u'ok': 1.0, u'err': None, u'n': 1}
>>> books.find_one({"name":"Bush"})
>>>

这是将那个文档全部删除。当然,也可以根据 mongodb 的语法规则,写个条件,按照条件删除。

索引

索引的目的是为了让查询速度更快,当然,在具体的项目开发中,要视情况而定是否建立索引。因为建立索引也是有代价的。

>>> books.create_index([("title", pymongo.DESCENDING),])

u'title_-1'

















本文转自cqtesting51CTO博客,原文链接:http://blog.51cto.com/cqtesting/2071144 ,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Node.js使用mongodb操作MongoDB数据库
Node.js使用mongodb操作MongoDB数据库
0 0
MongoDB :第六章:Java程序操作MongoDB
MongoDB :第六章:Java程序操作MongoDB
0 0
在node环境下使用Mongoose来操作MongoDB
在node环境下使用Mongoose来操作MongoDB
0 0
Python3操作MongoDB数据库
Python3操作MongoDB数据库
0 0
node操作mongoDB基础知识
步骤: 进入官网下载 MongoDB(根据电脑系统安装对应的 MongoDB 版本)。开始安装。 配置环境变量(将 MongoDB 的 bin 目录的路径配置在环境变量中)。 测试(在 cmd 中输入 mongod --version 查看 MongoDB 的版本)。
0 0
Node.js 操作 MongoDb 数据库
Node.js 操作 MongoDb 数据库
0 0
Python连接MongoDB操作
Python连接MongoDB操作
0 0
mongoDB操作应用万能手册,熟练不等于精通
日常工作的各种查询语句总结,自动化安装部署,应用接入……
0 0
【Python】操作数据库MongoDB
上一篇,我学习了Python使用PyMySQL来连接MySQL数据库,学了如何下载、安装、使用依赖库,上一篇的🔗Python操作MySQL主要是连接关系型数据库,而在实际使用过程中,使用mondoDB的频率也比较高。应运而生,学习这一篇主要也是相当重要,因为使用这些数据库的频率比较高、适用场景比较广泛。 MongoDB是为快速开发互联网Web应用而设计的数据库系统。MongoDB的设许目标是极简、灵活、作为Web应用栈的一部分。MongoDB的数据模型是面向文档的,所谓文档是一种类似于JSON的结构,简单理解MongoDB这个数据库中存的是各种各样的JSON。
0 0
Python 操作mongodb库
MongoDB 是一个基于分布式文件存储的数据库。
0 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
MongoDB 应用数据平台助力快速构建您的应用
立即下载
MongoDB网络安全和权限管理
立即下载
MongoDB与大数据
立即下载