热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MongoDB数据库__motor

MongoDB数据库__motor  motor是异步实现python操作数据库的工具。能减少后端访问数据库的延迟。Motor是一个异步实现的MongoDB存储库Motor与Pym

MongoDB数据库__motor 

 

motor是异步实现python操作数据库的工具。能减少后端访问数据库的延迟。



Motor 是一个异步实现的 MongoDB 存储库 Motor 与 Pymongo 的配置基本类似。连接对象就由 MongoClient 变为 AsyncIOMotorClient 了。

 


一、连接

 

# 普通连接
client = motor.motor_asyncio.AsyncIOMotorClient('mongodb://localhost:27017')
# 副本集连接
client = motor.motor_asyncio.AsyncIOMotorClient('mongodb://host1,host2/?replicaSet=my-replicaset-name')
# 密码连接
client = motor.motor_asyncio.AsyncIOMotorClient('mongodb://username:password@localhost:27017/dbname')
# 获取数据库
db = client.zfdb
# db = client['zfdb']
#
获取 collection
collection = db.test
# collection = db['test']

 


二、添加一条记录

async def do_insert():
document
= {'name': 'zone','sex':'boy'}
result
= await db.test_collection.insert_one(document)
print('result %s' % repr(result.inserted_id))
loop
= asyncio.get_event_loop()
loop.run_until_complete(do_insert())

 


三、批量增加记录

 

async def do_insert():
result
= await db.test_collection.insert_many(
[{
'name': i, 'sex': str(i + 2)} for i in range(20)])
print('inserted %d docs' % (len(result.inserted_ids),))
loop
= asyncio.get_event_loop()
loop.run_until_complete(do_insert())

 

 


四、查找一条记录

 

async def do_find_one():
document
= await db.test_collection.find_one({'name': 'zone'})
pprint.pprint(document)
loop
= asyncio.get_event_loop()
loop.run_until_complete(do_find_one())

 

 


五、查找多条记录

 

async def do_find():
cursor
= db.test_collection.find({'name': {'$lt': 5}}).sort('i')
for document in await cursor.to_list(length=100):
pprint.pprint(document)
loop
= asyncio.get_event_loop()
loop.run_until_complete(do_find())
# 添加筛选条件,排序、跳过、限制返回结果数
async def do_find():
cursor
= db.test_collection.find({'name': {'$lt': 4}})
# Modify the query before iterating
cursor.sort('name', -1).skip(1).limit(2)
async
for document in cursor:
pprint.pprint(document)
loop
= asyncio.get_event_loop()
loop.run_until_complete(do_find())

 

 


六、统计

 

async def do_count():
n
= await db.test_collection.count_documents({})
print('%s documents in collection' % n)
n
= await db.test_collection.count_documents({'name': {'$gt': 1000}})
print('%s documents where i > 1000' % n)
loop
= asyncio.get_event_loop()
loop.run_until_complete(do_count())

 

 


七、替换

 

async def do_replace():
coll
= db.test_collection
old_document
= await coll.find_one({'name': 'zone'})
print('found document: %s' % pprint.pformat(old_document))
_id
= old_document['_id']
result
= await coll.replace_one({'_id': _id}, {'sex': 'hanson boy'})
print('replaced %s document' % result.modified_count)
new_document
= await coll.find_one({'_id': _id})
print('document is now %s' % pprint.pformat(new_document))
loop
= asyncio.get_event_loop()
loop.run_until_complete(do_replace())

 

 


八、更新指定字段,不会影响到其他内容

async def do_update():
coll
= db.test_collection
result
= await coll.update_one({'name': 0}, {'$set': {'sex': 'girl'}})
print('更新条数: %s ' % result.modified_count)
new_document
= await coll.find_one({'name': 0})
print('更新结果为: %s' % pprint.pformat(new_document))
loop
= asyncio.get_event_loop()
loop.run_until_complete(do_update())

 

 


九、删除置顶记录

 

async def do_delete_many():
coll
= db.test_collection
n
= await coll.count_documents({})
print('删除前有 %s 条数据' % n)
result
= await db.test_collection.delete_many({'name': {'$gte': 10}})
print('删除后 %s ' % (await coll.count_documents({})))
loop
= asyncio.get_event_loop()
loop.run_until_complete(do_delete_many())

 

 

 



推荐阅读
  • 包含phppdoerrorcode的词条 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • Spring Data JdbcTemplate 入门指南
    本文将介绍如何使用 Spring JdbcTemplate 进行数据库操作,包括查询和插入数据。我们将通过一个学生表的示例来演示具体步骤。 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 本文详细介绍了如何在 Django 项目中使用 Admin 管理后台,包括创建超级用户、启动项目、管理数据模型和修改用户密码等步骤。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • 本文介绍如何通过 Python 的 `unittest` 和 `functools` 模块封装一个依赖方法,用于管理测试用例之间的依赖关系。该方法能够确保在某个测试用例失败时,依赖于它的其他测试用例将被跳过。 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • importpymysql#一、直接连接mysql数据库'''coonpymysql.connect(host'192.168.*.*',u ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
author-avatar
rhp3465483
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有