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 相关文章推荐
Web服务器框架 Tornado简介
Jul 16 Python
Python中使用装饰器和元编程实现结构体类实例
Jan 28 Python
Python基于PycURL自动处理cookie的方法
Jul 25 Python
Python3访问并下载网页内容的方法
Jul 28 Python
python版本的读写锁操作方法
Apr 25 Python
利用Python如何生成便签图片详解
Jul 09 Python
【python】matplotlib动态显示详解
Apr 11 Python
PyQt5 QTable插入图片并动态更新的实例
Jun 18 Python
浅析PyTorch中nn.Linear的使用
Aug 18 Python
python通过移动端访问查看电脑界面
Jan 06 Python
在CentOS7下安装Python3教程解析
Jul 09 Python
python爬虫之selenium库的安装及使用教程
May 23 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面向对象中static静态属性与方法的内存位置分析
2015/02/08 PHP
yii去掉必填项中星号的方法
2015/12/28 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
2017/10/12 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
2019/09/11 PHP
PHP7 其他修改
2021/03/09 PHP
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
js二级地域选择的实现方法
2013/06/17 Javascript
原生JavaScript编写俄罗斯方块
2015/03/30 Javascript
JS简单实现多级Select联动菜单效果代码
2015/09/06 Javascript
jQuery实现对象转为url参数的方法
2017/01/11 Javascript
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
2018/02/23 Javascript
node+koa2+mysql+bootstrap搭建一个前端论坛
2018/05/06 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
vue项目每30秒刷新1次接口的实现方法
2018/12/04 Javascript
JS如何生成随机验证码
2020/03/02 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
详解duck typing鸭子类型程序设计与Python的实现示例
2016/06/03 Python
Python网页正文转换语音文件的操作方法
2018/12/09 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
2019/09/20 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
浅谈在django中使用redirect重定向数据传输的问题
2020/03/13 Python
matplotlib jupyter notebook 图像可视化 plt show操作
2020/04/24 Python
HTML5的语法变化介绍
2013/08/13 HTML / CSS
AmazeUI 输入框组的示例代码
2020/08/14 HTML / CSS
小车司机岗位职责
2013/11/25 职场文书
工伤事故赔偿协议书范文
2014/09/24 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
英语通知范文
2015/04/22 职场文书
篮球赛新闻稿
2015/07/17 职场文书
安全生产会议制度
2015/08/06 职场文书
pytorch 实现在测试的时候启用dropout
2021/05/27 Python
MongoDB安装使用并实现Python操作数据库
2021/06/28 MongoDB
vue postcss-px2rem 自适应布局
2022/05/15 Vue.js