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实现定制交互式命令行的方法
Jul 03 Python
Python中的高级函数map/reduce使用实例
Apr 13 Python
介绍Python的Django框架中的静态资源管理器django-pipeline
Apr 25 Python
在Django的模型和公用函数中使用惰性翻译对象
Jul 27 Python
Python可变参数用法实例分析
Apr 02 Python
Python实现求解一元二次方程的方法示例
Jun 20 Python
浅析python的优势和不足之处
Nov 20 Python
Python基于Tkinter模块实现的弹球小游戏
Dec 27 Python
python实现植物大战僵尸游戏实例代码
Jun 10 Python
python如何读取bin文件并下发串口
Jul 05 Python
Python3标准库之functools管理函数的工具详解
Feb 27 Python
Python 实现将某一列设置为str类型
Jul 14 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
计算一段日期内的周末天数的php代码(星期六,星期日总和)
2009/11/12 PHP
解析PHP实现下载文件的两种方法
2013/07/05 PHP
9段PHP实用功能的代码推荐
2014/10/14 PHP
Zend Framework教程之Zend_Db_Table_Row用法实例分析
2016/03/21 PHP
php for 循环使用的简单实例
2016/06/02 PHP
php操作路径的经典方法(必看篇)
2016/10/04 PHP
CakePHP框架Session设置方法分析
2017/02/23 PHP
php微信开发之图片回复功能
2018/06/14 PHP
基于php解决json_encode中文UNICODE转码问题
2020/11/10 PHP
javascript下arguments,caller,callee,call,apply示例及理解
2009/12/24 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
chrome不支持form.submit的解决方案
2015/04/28 Javascript
微信小程序实现保存图片到相册功能
2018/11/30 Javascript
js中的数组对象排序分析
2018/12/11 Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
2020/07/30 Javascript
[02:32]DOTA2完美大师赛场馆静安体育中心观赛全攻略
2017/11/08 DOTA
[01:19]DOTA2城市挑战赛报名开始 开启你的城市传奇
2018/03/23 DOTA
在漏洞利用Python代码真的很爽
2007/08/26 Python
Python异常处理总结
2014/08/15 Python
跟老齐学Python之list和str比较
2014/09/20 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
2018/12/05 Python
pandas进行时间数据的转换和计算时间差并提取年月日
2019/07/06 Python
基于MATLAB和Python实现MFCC特征参数提取
2019/08/13 Python
PyCharm2019安装教程及其使用(图文教程)
2019/09/29 Python
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
html5 input属性使用示例
2013/06/28 HTML / CSS
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
朗仕(Lab series)英国官网:雅诗兰黛集团男士专属护肤品牌
2017/11/28 全球购物
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
舞蹈教育学专业推荐信
2013/11/27 职场文书
考试作弊检讨书大全
2014/02/18 职场文书
优秀语文教师事迹
2014/05/18 职场文书
学校运动会报道稿
2014/09/23 职场文书
2015年幼儿园卫生保健工作总结
2015/05/12 职场文书
离婚案件被告代理词
2015/05/23 职场文书
《王国之心》迎来了发售的20周年, 野村哲发布贺图
2022/04/11 其他游戏