Python中的MongoDB基本操作:连接、查询实例


Posted in Python onFebruary 13, 2015

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可护展的高性能数据存储解决方案。它的特点是高性能、易部署、易使用,存储数据非常方便。

MongoDB 简单使用

联接数据库

In [1]: import pymongo

In [2]: from pymongo import Connection

In [3]: connection = Connection('192.168.1.3', 27017) //创建联接

Connection 相关参数

Connection([host='localhost'[, port=27017[, pool_size=None[, auto_start_request=None[, timeout=None[, slave_okay=False[, network_timeout=None[, document_class=dict[, tz_aware=True]]]]]]]]])

数据库操作

In [9]: c.database_names() //列出所有数据库名称

Out[9]: [u'test', u'admin', u'yuhen', u'sms', u'local']
In [10]: c.server_info() //查看服务器相关信息

Out[10]:

{u'bits': 64,

 u'gitVersion': u'nogitversion',

 u'ok': 1.0,

 u'sysInfo': u'Linux yellow 2.6.24-27-server #1 SMP Fri Mar 12 01:23:09 UTC 2010 x86_64 BOOST_LIB_VERSION=1_40',

 u'version': u'1.2.2'}
In [16]: db = c['test'] //选择数据库

In [17]: db.collection_names() //列出当前数据库中所有集合名称

Out[17]: [u'system.indexes', u'fs.files', u'fs.chunks', u'test_gao']
In [23]: db.connection //查看联接信息

Out[23]: Connection('192.168.1.3', 27017)
In [24]: db.create_collection('test_abeen') //创建新集合

Out[24]: Collection(Database(Connection('192.168.1.3', 27017), u'test'), u'test_abeen')
In [25]: db.last_status() //查看上次操作状态

Out[25]: {u'err': None, u'n': 0, u'ok': 1.0}
In [26]: db.name //查看当前数据库名称

Out[26]: u'test'
In [27]: db.profiling_info() //查看配置信息

Out[27]: []
In [28]: db.profiling_level()

Out[28]: 0.0

集合操作

In [31]: db.collection_names() //查看当前数据库所有集合名称

Out[31]:

[u'system.indexes',

 u'fs.files',

 u'fs.chunks',

 u'test_gao',

 u'system.users',

 u'test_abeen']
In [32]: c = db.test_abeen //选择集合

In [33]: c.name //查看当前集合名称

Out[33]: u'test_abeen'
In [35]: c.full_name //查看当前集合全名

Out[35]: u'test.test_abeen'

In [36]: c.database //查看当前集合数据库相关信息

Out[36]: Database(Connection('192.168.1.3', 27017), u'test')
In [38]: post = {"author":"Mike","text":"this is a test by abeen"}

In [39]: posts = db.posts

In [40]: posts.insert(post) //向数据库集合插入文档,默认创建集合

Out[40]: ObjectId('4c358492421aa91e70000000')

In [41]: db.collection_names() //显示所有集合名称

Out[41]:

[u'system.indexes',

 u'fs.files',

 u'fs.chunks',

 u'test_gao',

 u'system.users',

 u'test_abeen',

 u'posts']
In [42]: posts.find_one() //从集合查找信息

Out[42]:

{u'_id': ObjectId('4c358492421aa91e70000000'),

 u'author': u'Mike',

 u'text': u'this is a test by abeen'}

In [52]: p.update({"author":"Mike"},{"$set":{"author":"abeen","text":"this is a test by abeen shan shan"}})//更新集合文档信息

In [55]: list(p.find())

Out[55]:

[{u'_id': ObjectId('4c358492421aa91e70000000'),

  u'author': u'abeen',

  u'text': u'this is a test by abeen shan shan'}]
In [96]: list(posts.find())

Out[96]:

[{u'_id': ObjectId('4c358492421aa91e70000000'),

  u'author': u'Mike',

  u'text': u'this is a test by abeen'},

 {u'_id': ObjectId('4c358ad4421aa91e70000002'), u'a': u'aa', u'b': u'bb'},

 {u'_id': ObjectId('4c358ad9421aa91e70000003'), u'a': u'aa', u'b': u'bb'},

 {u'_id': ObjectId('4c358abb421aa91e70000001'),

  u'a': u'abeen',

  u'b': u'this bb is updated'}]

In [97]: posts.remove({"a":"abeen"}) //删除符合条件的文档

In [98]: list(posts.find())

Out[98]:

[{u'_id': ObjectId('4c358492421aa91e70000000'),

  u'author': u'Mike',

  u'text': u'this is a test by abeen'},

 {u'_id': ObjectId('4c358ad4421aa91e70000002'), u'a': u'aa', u'b': u'bb'},

 {u'_id': ObjectId('4c358ad9421aa91e70000003'), u'a': u'aa', u'b': u'bb'}]
In [102]: db.collection_names()

Out[102]:

[u'system.indexes',

 u'fs.files',

 u'fs.chunks',

 u'test_gao',

 u'system.users',

 u'test_abeen',

 u'posts',

 u'doc_abeen']
In [104]: db.drop_collection("doc_abeen") //删除集合

In [105]: db.collection_names()

Out[105]:

[u'system.indexes',

 u'fs.files',

 u'fs.chunks',

 u'test_gao',

 u'system.users',

 u'test_abeen',

 u'posts']

代码

In [113]: result = db.posts.find({"a":"aa"})//查找

In [114]: type(result)

Out[114]: <class 'pymongo.cursor.Cursor'>

In [119]: list(result)

Out[119]:

[{u'_id': ObjectId('4c358ad4421aa91e70000002'), u'a': u'aa', u'b': u'bb'},

 {u'_id': ObjectId('4c358ad9421aa91e70000003'), u'a': u'aa', u'b': u'bb'}]

find格式

find([spec=None[, fields=None[, skip=0[, limit=0[, timeout=True[, snapshot=False[, tailable=False[, sort=None[, max_scan=None[, as_class=None[, **kwargs]]]]]]]]]]])

代码

In [120]: db.posts.count()//当前集合文档数

Out[120]: 3

In [121]: type(db.posts)

Out[121]: <class 'pymongo.collection.Collection'>
In [138]: posts.rename('test_abeen')//重命名当前集合

In [139]: db.collection_names()

Out[139]:

[u'system.indexes',

 u'fs.files',

 u'fs.chunks',

 u'test_gao',

 u'system.users',

 u'test_abeen']
In [151]: for post in c.find({"a":"aa"}).sort("a"): //查询并排序列

    post

Out[152]: {u'_id': ObjectId('4c358ad4421aa91e70000002'), u'a': u'aa', u'b': u'bb'}

Out[152]: {u'_id': ObjectId('4c358ad9421aa91e70000003'), u'a': u'aa', u'b': u'bb'}
> db.foo.insert( { x : 1, y : 1 } )

> db.foo.insert( { x : 2, y : "string" } )

> db.foo.insert( { x : 3, y : null } )

> db.foo.insert( { x : 4 } )
// Query #1 y 为null或不存在

> db.foo.find( { "y" : null } ) 

{ "_id" : ObjectId("4dc1975312c677fc83b5629f"), "x" : 3, "y" : null }

{ "_id" : ObjectId("4dc1975a12c677fc83b562a0"), "x" : 4 }
// Query #2 y为null的值

> db.foo.find( { "y" : { $type : 10 } } )

{ "_id" : ObjectId("4dc1975312c677fc83b5629f"), "x" : 3, "y" : null }
// Query #3 y不存在的结果

> db.foo.find( { "y" : { $exists : false } } )

{ "_id" : ObjectId("4dc1975a12c677fc83b562a0"), "x" : 4 }
Python 相关文章推荐
python 判断自定义对象类型
Mar 21 Python
python 生成目录树及显示文件大小的代码
Jul 23 Python
python删除过期文件的方法
May 29 Python
一波神奇的Python语句、函数与方法的使用技巧总结
Dec 08 Python
python实现感知器算法详解
Dec 19 Python
python爬取哈尔滨天气信息
Jul 14 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
Jul 31 Python
python实现画五角星和螺旋线的示例
Jan 20 Python
Python OpenCV调用摄像头检测人脸并截图
Aug 20 Python
如何使用python操作vmware
Jul 27 Python
Python递归函数 二分查找算法实现解析
Aug 12 Python
Django admin组件的使用
Oct 24 Python
Python import自定义模块方法
Feb 12 #Python
Python实现获取某天是某个月中的第几周
Feb 11 #Python
Python脚本实现下载合并SAE日志
Feb 10 #Python
Python常用内置函数总结
Feb 08 #Python
Python文件和目录操作详解
Feb 08 #Python
Python中操作MySQL入门实例
Feb 08 #Python
Python Web框架Flask下网站开发入门实例
Feb 08 #Python
You might like
消息持续发送的完整例子
2006/10/09 PHP
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
ASP.NET jQuery 实例5 (显示CheckBoxList成员选中的内容)
2012/01/13 Javascript
JavaScript中数组对象的那些自带方法介绍
2013/03/12 Javascript
使用jQuery validate 验证注册表单实例演示
2013/03/25 Javascript
javascript 实现键盘上下左右功能的小例子
2013/09/15 Javascript
自定义ExtJS控件之下拉树和下拉表格附源码
2013/10/15 Javascript
jquery如何根据值设置默认的选中项
2014/03/17 Javascript
jQuery中的jQuery()方法用法分析
2014/12/27 Javascript
Sea.JS知识总结
2016/05/05 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
Bootstrap实现下拉菜单多级联动
2017/11/23 Javascript
详解webpack-dev-server使用方法
2018/09/14 Javascript
如何封装了一个vue移动端下拉加载下一页数据的组件
2019/01/06 Javascript
详解微信小程序回到顶部的两种方式
2019/05/09 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
2019/09/11 Javascript
微信小程序分包加载代码实现方法详解
2019/09/23 Javascript
Python实现代码统计工具(终极篇)
2016/07/04 Python
深入理解Python单元测试unittest的使用示例
2017/11/18 Python
使用tensorflow实现线性回归
2018/09/08 Python
基于树莓派的语音对话机器人
2019/06/17 Python
python sklearn常用分类算法模型的调用
2019/10/16 Python
Python关于反射的实例代码分享
2020/02/20 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
Mio Skincare法国官网:身体紧致及孕期身体护理
2018/04/04 全球购物
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
2014年医学生毕业自我鉴定
2014/03/26 职场文书
公司担保书格式范文
2014/05/12 职场文书
派出所所长先进事迹
2014/05/19 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
干部培训工作总结2015
2015/05/25 职场文书
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python