本文是一个Python 使用MongoDB的简单教程,将使用pymongo对MongoDB进行的各种操作进行了简单的汇总,NoSQLFan进行了简单整理,使用Python的同学可以看一看。
下载相应平台的版本,解压即可。为方便使用,将bin路径添加到系统path环境变量里。其中mongod是服务器,mongo是客户shell,然后创建数据文件目录:在c盘下创建data文件夹,里面创建db文件夹。
基本使用:
安装对应语言的Driver,Python 安装 pymongo
使用方法总结,摘自官方教程
创建连接
>>> import pymongo >>> connection=pymongo.Connection('localhost',27017) |
切换数据库
>>> db = connection.test_database |
获取collection
>>> collection = db.test_collection |
db和collection都是延时创建的,在添加Document时才真正创建
文档添加,_id自动创建
>>> import datetime >>> post = {"author": "Mike", ... "text": "My first blog post!", ... "tags": ["mongodb", "python", "pymongo"], ... "date": datetime.datetime.utcnow()} >>> posts = db.posts >>> posts.insert(post) ObjectId('...') |
批量插入
>>> new_posts = [{"author": "Mike", ... "text": "Another post!", ... "tags": ["bulk", "insert"], ... "date": datetime.datetime(2009, 11, 12, 11, 14)}, ... {"author": "Eliot", ... "title": "MongoDB is fun", ... "text": "and pretty easy too!", ... "date": datetime.datetime(2009, 11, 10, 10, 45)}] >>> posts.insert(new_posts) [ObjectId('...'), ObjectId('...')] |
获取所有collection(相当于SQL的show tables)
>>> db.collection_names() [u'posts', u'system.indexes'] |
获取单个文档
>>> posts.find_one() {u'date': datetime.datetime(...), u'text': u'My first blog post!', u'_id': ObjectId('...'), u'author': u'Mike', u'tags': [u'mongodb', u'python', u'pymongo']} |
查询多个文档
>> for post in posts.find(): ... post ... {u'date': datetime.datetime(...), u'text': u'My first blog post!', u'_id': ObjectId('...'), u'author': u'Mike', u'tags': [u'mongodb', u'python', u'pymongo']} {u'date': datetime.datetime(2009, 11, 12, 11, 14), u'text': u'Another post!', u'_id': ObjectId('...'), u'author': u'Mike', u'tags': [u'bulk', u'insert']} {u'date': datetime.datetime(2009, 11, 10, 10, 45), u'text': u'and pretty easy too!', u'_id': ObjectId('...'), u'author': u'Eliot', u'title': u'MongoDB is fun'} |
加条件的查询
>>> posts.find_one({"author": "Mike"}) |
高级查询
>>> posts.find({"date": {"$lt": d}}).sort("author") |
统计数量
加索引
>>> from pymongo import ASCENDING, DESCENDING >>> posts.create_index([("date", DESCENDING), ("author", ASCENDING)]) u'date_-1_author_1' |
查看查询语句的性能
>>> posts.find({"date": {"$lt": d}}).sort("author").explain()["cursor"] u'BtreeCursor date_-1_author_1' >>> posts.find({"date": {"$lt": d}}).sort("author").explain()["nscanned"] 2 |
附自己总结的一点小心得,仅供参考
缺点
- 不是全盘取代传统数据库(NoSQLFan:是否能取代需要看应用场景)
- 不支持复杂事务(NoSQLFan:MongoDB只支持对单个文档的原子操作)
- 文档中的整个树,不易搜索,4MB限制?(NoSQLFan:1.8版本已经修改为16M)
特点(NoSQLFan:作者在这里列举的很多只是一些表层的特点):
- 文档型数据库,表结构可以内嵌
- 没有模式,避免空字段开销(Schema Free)
- 分布式支持
- 查询支持正则
- 动态扩展架构
- 32位的版本最多只能存储2.5GB的数据(NoSQLFan:最大文件尺寸为2G,生产环境推荐64位)
名词对应
- 一个数据项叫做 Document(NoSQLFan:对应MySQL中的单条记录)
- 一个文档嵌入另一个文档(comment 嵌入 post)叫做 Embed
- 储存一系列文档的地方叫做 Collections(NoSQLFan:对应MySQL中的表)
- 表间关联,叫做 Reference
分享到:
相关推荐
技术上,网站可能采用前后端分离的架构,前端使用HTML、CSS和JavaScript进行页面设计和交互,后端使用如Python的Django或Node.js的Express框架处理数据和业务逻辑。数据库管理系统,如MySQL或MongoDB,用于存储用户...
后端部分可能基于Node.js、Java、Python等服务器端语言构建,使用Express、Django或Flask等框架。后端的主要任务是处理来自前端的HTTP请求,如用户登录验证、数据存储与检索、支付接口调用等。数据库系统,如MySQL、...
3. **数据库技术**:数据库是IT领域的重要组成部分,ChinaUnix博客会涉及MySQL、PostgreSQL、Oracle、MongoDB等数据库的使用、设计、优化和故障排查,帮助数据库管理员和开发者解决问题。 4. **网络与系统运维**:...
2. **编程语言**:根据源码,识别使用的编程语言,如Python(Django或Flask框架)、Java(Spring Boot)、Node.js(Express)等,并学习这些语言的基础和应用。 3. **数据库设计**:查找数据库配置文件,了解如何...
5. **支付系统**:支付接口的调用、支付状态回调、退款功能,需要掌握支付API的使用。 6. **后台管理系统**:商品上架、库存管理、订单处理、用户管理、数据分析等功能,涉及到后台界面设计和权限控制。 7. **...
此外,后端可能采用Node.js、Java或Python等服务器端语言,结合数据库如MySQL或MongoDB进行数据存储与管理。 二、页面结构与布局 1. WXML与WXSS:WXML负责结构化内容的展示,类似HTML,而WXSS则用于定义样式,类似...
3. **后端源码**:后端源码主要包括服务器端的编程语言(如Java、Python或Node.js)、数据库设计(如MySQL、MongoDB)、框架(如Django、Spring Boot、Express)以及业务逻辑的实现。通过源码,开发者可以了解到如何...
数据库方面,MySQL、PostgreSQL或MongoDB等可能是常用的选择,用于存储课程信息、用户数据等。 在大学精品课程建设网中,可能包括的功能模块有: 1. 课程展示:列出所有精品课程,包括课程简介、教师信息、课程...
开发此类小程序可能涉及到的技术栈包括前端框架(如微信小程序开发框架WXML和WXSS)、后端服务(如Node.js、Python等)、数据库管理(如MySQL、MongoDB)、API接口设计与调用、以及安全策略(如数据加密、用户隐私...
这些技术通常与数据库系统(如MySQL、PostgreSQL或MongoDB)结合使用,处理用户请求并返回响应。 3. **数据库设计**:宠物用品交易网站需要一个精心设计的数据库来存储商品信息、用户数据、订单详情等。这涉及数据...
3. **数据库管理**:笔记可能包括SQL查询技巧、数据库设计模式,以及MySQL、PostgreSQL、MongoDB等数据库系统的使用心得。 4. **版本控制**:Git是常见的版本控制系统,笔记中会介绍如何使用Git进行代码提交、分支...
二是支持社交功能,让用户能够分享自己的食谱到社区,与其他用户交流烹饪心得。 【文件名称列表】 虽然没有具体的文件名,但从"Cook-Book-main"来看,这可能是一个项目的主目录或者源代码库。在实际的MVC应用中,这...