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中利用sqrt()方法进行平方根计算的教程
May 15 Python
Python 列表排序方法reverse、sort、sorted详解
Jan 22 Python
Python基于回溯法子集树模板实现8皇后问题
Sep 01 Python
Python基础语言学习笔记总结(精华)
Nov 14 Python
python构建基础的爬虫教学
Dec 23 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
Dec 24 Python
Python3匿名函数lambda介绍与使用示例
May 18 Python
python实现植物大战僵尸游戏实例代码
Jun 10 Python
Pytorch根据layers的name冻结训练方式
Jan 06 Python
Python实现FLV视频拼接功能
Jan 21 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
Sep 23 Python
python turtle绘制多边形和跳跃和改变速度特效
Mar 16 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
CodeIgniter中实现泛域名解析
2014/07/19 PHP
PHP简单实现DES加密解密的方法
2016/07/12 PHP
PHP Filter过滤器全面解析
2016/08/09 PHP
PHP创建XML接口示例
2019/07/04 PHP
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
用jQuery获取IE9下拉框默认值问题探讨
2013/07/22 Javascript
用js的for循环获取radio选中的值
2013/10/21 Javascript
利用javascript实现web页面中指定区域打印
2013/10/30 Javascript
使用GruntJS构建Web程序之构建篇
2014/06/04 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
mui上拉加载功能实例详解
2017/04/13 Javascript
详解Vue 方法与事件处理器
2017/06/20 Javascript
JS中使用media实现响应式布局
2017/08/04 Javascript
详解webpack 打包文件体积过大解决方案(code splitting)
2018/04/10 Javascript
新手必须知的Node.js 4个JavaScript基本概念
2018/09/16 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
2018/09/27 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
2019/04/16 Javascript
vue.js 解决v-model让select默认选中不生效的问题
2020/07/28 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
2020/08/05 Javascript
解决Antd 里面的select 选择框联动触发的问题
2020/10/24 Javascript
vue 中的动态传参和query传参操作
2020/11/09 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
2021/01/08 Vue.js
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
Python3.6.2调用ffmpeg的方法
2019/01/10 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
PyQt5下拉式复选框QComboCheckBox的实例
2019/06/25 Python
Pytorch释放显存占用方式
2020/01/13 Python
python下载的库包存放路径
2020/07/27 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
人力资源管理毕业求职信
2014/08/05 职场文书
幼儿园大班教师个人工作总结
2015/02/05 职场文书
2015年小学二年级班主任工作总结
2015/05/21 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书
python实现局部图像放大
2021/11/17 Python
python超详细实现完整学生成绩管理系统
2022/03/17 Python
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers