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之入门(二)基本数据类型
May 25 Python
web.py在SAE中的Session问题解决方法(使用mysql存储)
Jun 24 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
Jun 09 Python
python3连接MySQL数据库实例详解
May 24 Python
Python实用技巧之利用元组代替字典并为元组元素命名
Jul 11 Python
使用Python机器学习降低静态日志噪声
Sep 29 Python
浅谈python的dataframe与series的创建方法
Nov 12 Python
python爬取酷狗音乐排行榜
Feb 20 Python
python-序列解包(对可迭代元素的快速取值方法)
Aug 24 Python
python实现输出一个序列的所有子序列示例
Nov 18 Python
Python对称的二叉树多种思路实现方法
Feb 28 Python
Python爬虫之Selenium多窗口切换的实现
Dec 04 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经典的给图片加水印程序
2006/12/06 PHP
php写app接口并返回json数据的实例(分享)
2017/05/20 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
2019/04/10 PHP
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
jquery ajax属性async(同步异步)示例
2013/11/05 Javascript
JS增加行复制行删除行的实现代码
2013/11/09 Javascript
Chrome下ifame父窗口调用子窗口的问题示例探讨
2014/03/17 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
Vue input控件通过value绑定动态属性及修饰符的方法
2017/05/03 Javascript
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
jQuery 实现批量提交表格多行数据的方法
2018/08/09 jQuery
vue 动态绑定背景图片的方法
2018/08/10 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
JS滚轮控制图片缩放大小和拖动的实例代码
2018/11/20 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
Pytorch中的VGG实现修改最后一层FC
2020/01/15 Python
python3 正则表达式基础廖雪峰
2020/03/25 Python
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
2020/04/15 Python
python3中布局背景颜色代码分析
2020/12/01 Python
Shein英国:女性时尚网上商店
2019/04/10 全球购物
德国最新街头服饰网上商店:BODYCHECK
2019/09/15 全球购物
校运会广播稿100字
2014/01/27 职场文书
优秀高中生事迹材料
2014/02/11 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
逃课检讨书
2015/01/26 职场文书
房地产公司工程部经理岗位职责
2015/04/09 职场文书
女性励志书籍推荐
2019/08/19 职场文书
Nginx虚拟主机的搭建的实现步骤
2022/01/18 Servers
Python测试框架pytest高阶用法全面详解
2022/06/01 Python