`
cooler1217
  • 浏览: 364503 次
  • 性别: 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-migrate:使用Python进行Mongodb数据迁移

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

    pymongo_demo.py

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

    pymongo 入门知识

    pymongo 入门知识, 包括链接 Docker Mongo , 数据 链接,插入, 查询,等 pymongo 入门知识, 包括链接 Docker Mongo , 数据 链接,插入, 查询,等 pymongo 入门知识, 包括链接 Docker Mongo , 数据 链接,插入,...

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

    引用PyMongo 复制代码 代码如下: >>> import pymongo 创建连接Connection 复制代码 代码如下: >>> import pymongo >>> conn = pymongo.Connection(‘localhost’,27017) 或 复制代码 代码如下: >>> from pymongo ...

    pymongo中聚合查询的使用方法

    笨的方法是使用find 将数据查询出来,再使用count() 方法进行数据统计,这个场景还好,但是如果要求其中某个字段的和呢?是不是就非得遍历出相应的数据然后再进行求和运算呢? 在mysql中我们经常会用到count、group...

    pymongo-3.12.0-cp38-cp38-win_amd64

    pymongo-3.12.0-cp38-cp38-win_amd64

    pymongo实现多结果进行多列排序的方法

    主要介绍了pymongo实现多结果进行多列排序的方法,涉及Python排序的相关技巧,需要的朋友可以参考下

    Python使用pymongo库操作MongoDB数据库的方法实例

    今天小编就为大家分享一篇关于Python使用pymongo库操作MongoDB数据库的方法实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    Python3中使用PyMongo的方法详解

    平常在处理数据的时候,必不可少地要使用数据库存取数据,出于一些原因,个人非常...下面这篇文章主要给大家介绍了Python3中使用PyMongo的方法示例,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。

    Python的MongoDB模块PyMongo操作方法集锦

    主要介绍了Python的MongoDB模块PyMongo操作方法集锦,包括数据的增删查改以及索引等相关的基本操作,需要的朋友可以参考下

    pymongo中group by的操作方法教程

    使用 pymongo 进行 group by 操作有两种基本方式,他们都是 mongodb 的原生命令,于 Collection 对象上调用。 def aggregate(self, pipeline, **kwargs): def group(self, key, condition, initial, reduce, ...

    Python pymongo模块用法示例

    之前在用关系型数据库的时候,我们把产品信息打散到不同的表中,要通过关系表或者使用join拼接成复杂的SQL语句的方式才能获得需要的数据。现在我们可以更多地把产品信息放在一起,也不需要提前预定产品信息的模式。...

    pymongo-3.11.2-cp36-cp36m-win32

    pymongo-3.11.2-cp36-cp36m-win32

    pymongo为mongodb数据库添加索引的方法

    本文实例讲述了pymongo为mongodb数据库添加索引的方法。分享给大家供大家参考。具体实现方法如下: ... 您可能感兴趣的文章:MongoDB索引使用详解MongoDB的基础查询和索引操作方法总结pymongo给mongodb创建索

    Python数据持久化存储实现方法分析

    本文实例讲述了Python数据持久化存储实现方法。分享给大家供大家参考,具体如下: 1、pymongo的使用 前三步为创建对象 第一步创建连接对象 conn = pymongo.MongoClient('IP地址',27017) 第二步创建库 db = conn...

    python mongo 向数据中的数组类型新增数据操作

    补充知识:pymongo插入数据时更新和不更新的使用 (1)update的setOnInsert 当该key不存在的时候执行插入操作,当存在的时候则不管,可以使用setOnInsert db.test.update({‘_id’: ‘id’}, {‘$setOnInsert’: {...

    Python pymongo模块常用操作分析

    主要介绍了Python pymongo模块常用操作,结合实例形式分析了pymongo模块的导入、连接MongoDB数据以及插入、更新、删除、查询等操作相关实现技巧,需要的朋友可以参考下

    Python实现将数据框数据写入mongodb及mysql数据库的方法

    本文实例讲述了Python实现将数据框数据写入mongodb...写入mongodb代码片段(使用pymongo库): ##########################写入mongodb 数据库###################### ###########################python操作mongodb数

Global site tag (gtag.js) - Google Analytics