`
cooler1217
  • 浏览: 378520 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

pymongo更新数据 使用方法

 
阅读更多
# From http://www.oschina.net/p/pymongo
PyMongo 是 MongoDB 的 Python 接口开发包。
示例代码:
创建Connection时,指定host及port参数
>>> import pymongo
>>> conn = pymongo.Connection(host='127.0.0.1',port=27017)

连接数据库
>>> db = conn.ChatRoom

>>> db = conn['ChatRoom']

连接聚集
>>> account = db.Account

>>> account = db["Account"]

查看全部聚集名称
>>> db.collection_names()

查看聚集的一条记录
>>> db.Account.find_one()
>>> db.Account.find_one({"UserName":"keyword"})

查看聚集的字段
>>> db.Account.find_one({},{"UserName":1,"Email":1})
{u'UserName': u'libing', u'_id': ObjectId('4ded95c3b7780a774a099b7c'), u'Email': u'libing@35.cn'}
>>> db.Account.find_one({},{"UserName":1,"Email":1,"_id":0})
{u'UserName': u'libing', u'Email': u'libing@35.cn'}

查看聚集的多条记录
>>> for item in db.Account.find():
        item
>>> for item in db.Account.find({"UserName":"libing"}):
        item["UserName"]

查看聚集的记录统计
>>> db.Account.find().count()
>>> db.Account.find({"UserName":"keyword"}).count()

聚集查询结果排序
>>> db.Account.find().sort("UserName")  --默认为升序
>>> db.Account.find().sort("UserName",pymongo.ASCENDING)   --升序
>>> db.Account.find().sort("UserName",pymongo.DESCENDING)  --降序

聚集查询结果多列排序
>>> db.Account.find().sort([("UserName",pymongo.ASCENDING),("Email",pymongo.DESCENDING)])

添加记录
>>> db.Account.insert({"AccountID":21,"UserName":"libing"})

修改记录
>>> db.Account.update({"UserName":"libing"},{"$set":{"Email":"libing@126.com","Password":"123"}})

删除记录
>>> db.Account.remove()   -- 全部删除
>>> db.Test.remove({"UserName":"keyword"})

# =========================================================== #
本文是一个Python 使用MongoDB的简单教程,将使用pymongo对MongoDB进行的各种操作进行了简单的汇总,NoSQLFan进行了简单整理,使用Python的同学可以看一看。
下载相应平台的版本,解压即可。为方便使用,将bin路径添加到系统path环境变量里。其中mongod是服务器,mongo是客户shell,然后创建数据文件目录:在c盘下创建data文件夹,里面创建db文件夹。
基本使用:

安装对应语言的Driver,Python 安装 pymongo
$ easy_install 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")
统计数量
>>> posts.count()
3
加索引
>>> 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
分享到:
评论

相关推荐

    pymongo使用方法

    **PyMongo库与MongoDB连接** PyMongo是Python的一个库,用于与MongoDB数据库进行交互。MongoDB是一种非关系型数据库(NoSQL),它以键值对...在实际项目中,还需要学习更多关于查询、更新、删除等其他功能的使用方法。

    pymongo的使用和开发

    在Pymongo中,我们可以使用正则表达式进行复杂的数据过滤。比如,要查找所有名字以"J"开头的用户: ```python regex_query = {'name': {'$regex': '^J'}} for user in users.find(regex_query): print(user) ...

    pymongo-1.9.tar.gz

    2. 例如,通过`server_status()`方法可以获取MongoDB服务器的基本信息,包括内存使用、连接数、索引统计等: ```python from pymongo import MongoClient client = MongoClient('localhost', 27017) server_...

    pymongo-2.3.tar.gz

    在Python中,我们通常使用pymongo库作为MongoDB的客户端工具,它为Python开发者提供了丰富的接口,以进行数据库的连接、查询、更新等操作。本文将详细介绍pymongo-2.3版本,它是pymongo的一个重要里程碑。 1. ...

    Python库 | pymongo-3.0.1.win32-py3.4.exe

    MongoDB是一个流行的开源、分布式文档型数据库,而pymongo则是Python编程语言与MongoDB之间的桥梁,使得Python开发者能够方便地进行数据存储、查询、更新和删除等操作。 在Python中,pymongo库提供了丰富的API,...

    Python库 | pymongo-3.7.0-py3.4-macosx-10.6-intel.egg

    例如,创建数据库只需一行代码`db = client['database_name']`,插入文档则可使用`db.collection.insert_one(document)`,查询数据则利用`db.collection.find()`,更新数据使用`db.collection.update_one(filter, ...

    Python-FlaskPyMongo支持Flask应用的PyMongo

    下面我们将深入探讨Flask-PyMongo的关键概念和使用方法。 ### 1. 安装与配置 首先,你需要通过pip安装Flask-PyMongo库: ```bash pip install flask-pymongo ``` 然后,在你的Flask应用初始化时,可以通过`...

    pymongo-2.7.tar.gz

    3. 更新数据: ```python collection.update_one({'name': 'Alice'}, {'$set': {'age': 31}}) ``` 4. 删除数据: ```python collection.delete_one({'name': 'Alice'}) ``` 四、高级特性 1. 使用游标遍历结果集,...

    Python库 | pymongo-3.3.0-cp27-none-macosx_10_11_intel.whl

    5. **查询数据**:使用`find`方法查询文档,可以指定查询条件: ```python result = collection.find({'name': 'Alice'}) for doc in result: print(doc) ``` 6. **更新文档**:`update_one`和`update_many`...

    pymongo--mongodb python文档

    MongoDB中的数据使用JSON风格的文档来表示和存储。在PyMongo中,文档通常使用字典来表示。例如,以下字典可以用来表示一个博客帖子: ```python import datetime post = { "author": "Mike", "text": "My first ...

    PyPI 官网下载 | pymongo-3.2.1-py3.2-win32.egg

    然而,随着Python和pymongo的更新,开发者应考虑升级到最新版本,以获得更好的性能、安全性和新特性。同时,由于是win32版本,此包只适用于32位的Windows系统,64位系统需要寻找对应的win-amd64版本。 总的来说,...

    Python库 | pymongo-3.11.0-cp27-cp27m-manylinux1_i686.whl

    首先,pymongo是一个功能丰富的Python接口,它允许开发者直接在Python代码中执行几乎所有的MongoDB操作,包括数据的插入、查询、更新和删除。在pymongo-3.11.0版本中,开发者可以享受到一系列增强的功能和优化的性能...

    Python库 | pymongo-3.12.1-cp39-cp39-macosx_10_9_x86_64.whl

    此篇将详细解析pymongo-3.12.1版本的特性、安装方法以及在Python中如何使用它来操作MongoDB。 pymongo是一个全面的Python驱动程序,它为MongoDB提供了丰富的功能,包括连接管理、数据读写、查询优化等。这个特定的...

    pymongo-migrate:使用Python进行Mongodb数据迁移

    pymongo迁移 使用Python进行Mongodb迁移。 由于mongodb在大多数情况下都是无模式的,因此您无需进行数据迁移就可以做到。 有时,您想创建一些新实体或迁移旧数据,而不是在代码中添加另一个IF语句。 这是pymongo-...

    Python操作MongoDB数据库PyMongo库使用方法

    使用`sort()`方法对查询结果进行排序,`sort("field")`默认升序,`sort("field", pymongo.ASCENDING)`或`sort("field", 1)`也是升序,`sort("field", pymongo.DESCENDING)`或`sort("field", -1)`为降序。...

    Python-模拟pymongo集合对象的小型库用于测试目的

    MongoDB是一个广泛使用的文档型数据库,它提供了灵活的数据模型和高性能。对于Python开发者来说,`pymongo`是与MongoDB交互的主要库。然而,在进行测试时,直接连接到实际的MongoDB服务器可能不切实际或效率低下,...

    pymongo中聚合查询的使用方法

    标题中的“pymongo中聚合查询的使用方法”主要涉及以下知识点: 1. **聚合查询**:在MongoDB中,聚合查询用于执行更复杂的统计和分析任务,如分组、计数、求和、平均值等。这与SQL中的`GROUP BY`和聚合函数(如`...

    PyPI 官网下载 | pymongo-3.9.0-cp27-cp27mu-manylinux1_x86_64.whl

    pymongo是Python语言官方推荐的MongoDB驱动程序,它为Python程序员提供了一套全面且易于使用的API,用于操作MongoDB数据库。MongoDB是一种流行的开源、非关系型数据库系统,以其灵活的数据模型和高性能著称。通过...

    pymongo_demo.py

    pymongo_demo.py为MongoDB数据库的使用脚本。包含以下: (一)连接MongoClient;(二)获取数据库(database);(三)连接或创建Collection(集合); (四)存储数据;(五)从MongoDB中 查询 数据;(六)更新数据...

Global site tag (gtag.js) - Google Analytics