pymongdb入门
Pymongo入门
安装
pip install pymongo
连接
实际就是实例化一个客户端对象,然后客户端对象中指定一个库作为库对象,库对象中的集合对象就是之后常用来执行操作的对象
1 '''
2 假设mongdb中存在库abc,其中有集合inventory
3 连接数据库的用户名和密码:root,123456
4 '''
5 import pymongo
6
7 username = 'root'
8 password = '123456'
9 port = '27017'
10 host = f'mongdb://{username}:{password}@localhost:{port}'
11 client = pymongo.MongoClient(host=host) # 实例化客户端进行连接
12 db = client["abc"] # 获取指定库对象
13 collection = db["inventory"] # 获取指定集合对象
库操作
| 方法 | 注释 |
|---|---|
| create_collection() | 创建集合 |
| drop_collection() | 删除集合 |
| collection_names() | 集合名称列表 |
集合操作
CRUD
查找
| 方法 | 注释 |
|---|---|
| find() | 查询一个或多个文档,返回的是pymongo.cursor.Cursor对象(可以认为是一个字典集合) |
| find_one() | 查询一个文档,返回的是一个字典 |
查询的键值对参数与实际在mongoDB客户端中使用基本一致,注意在使用条件操作符是需要加引号,比如:$gt,$regex
例子
1 ...
2 result = collection.find({'qty':'$gt':25.0}) # $gt是条件操作,记得加引号
3 for res in result:
4 print(res)
5 result = collection.find_one({'qty':'$gt':25.0}) # 只返回查询到的第一个结果
Cursor对象常用方法
| 方法 | 注释 |
|---|---|
| limit() | 限制结果个数 |
| max()/min() | 求最大/最小结果 |
| skip() | 跳过指定个数结果后的结果集合 |
| sort() | 排序;diresction:pymongo.ASCENDING(递增),pymongo.DESCENDING(递减) |
插入
| 方法 | 注释 |
|---|---|
| insert_one() | 插入一个文档 |
| insert_many() | 插入多个文档,第一个参数是文档列表 |
1 ...
2 result = collection.insert_one({'qty':28.0})
3 result = collection.insert_many([{'qty':num} for num in range(10)])
4 print(result.acknowledged) # 为True则说明插入成功
更新
| 方法 | 注释 |
|---|---|
| update_one() | 更新一个文档中指定字段的值 |
| update_many() | 更新多个文档中指定字段的值 |
| find_one_and_update() | 找到一个文档并更新指点字段的值 |
| repalce_one() | 替换一个文档所有字段的值 |
| find_one_and_replace() | 找到一个文档替换所有字段的值 |
注意update和replace的区别
1 ...
2 result = collection.update_one({'qty':7},{'$set':{'qty':11}})
3 # 多留意result.raw_result和result.modified
删除
| 方法 | 注释 |
|---|---|
| delete_one() | 删除一个文档 |
| delete_many() | 删除多个文档 |
| find_one_and_delete() | 找到一个文档并删除 |
| drop() | 删除整个集合 |
索引
| 方法 | 注释 |
|---|---|
| create_index() | 创建一个索引 |
| create_indexes() | 创建多个索引 |
| list_indexes() | 获取集合中的所有索引 |
| drop_indexes() | 删除索引 |
pymongdb入门的更多相关文章
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- Oracle分析函数入门
一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...
- Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
- Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数
上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...
- Angular2入门系列教程4-服务
上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...
- wepack+sass+vue 入门教程(三)
十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...
- wepack+sass+vue 入门教程(二)
六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...
- wepack+sass+vue 入门教程(一)
一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...
随机推荐
- linux updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'
我们想查找我们最新创建的文件时,由于locate的数据库是每天更新.所以我们新创建的文件还没有被更新到系统的数据库. 这是需要手动更新数据库. 然后就可以查到. updatedb 输出 updated ...
- 使用.NET6打造动态API
ApiLite是直接将Service层自动生成api路由,可以不用添加Controller,支持模块插件化,在项目开发中能够提高工作效率,降低代码量. 开发环境 .NET SDK 6.0.100-rc ...
- 使用google zxing生成二维码图片
生成二维码工具类: 1 import java.awt.geom.AffineTransform; 2 import java.awt.image.AffineTransformOp; 3 impor ...
- 你们不要再吵了! Java只有值传递..
写在前边 上次聊到Java8新特性 lambda时,有小伙伴在评论区提及到了lambda对于局部变量的引用,补充着博客的时候,知识点一发散就有了这篇对于值传递还是引用传递的思考.关于这个问题为何会有如 ...
- 这些年我@yangbodong22011参与的开源
2020年第一天,水一篇博客,对新年起码的尊重.这里记录下我参与的开源项目情况. Talk is cheap. Show me the code Linus Torvalds Jedis PR:htt ...
- 『学了就忘』Linux基础命令 — 37、Linux中挂载操作的相关命令
目录 1.mount命令介绍 (1)mount命令说明 (2)mount命令格式 2.mount命令示例 3.mount -a命令说明 4.-o特殊选项说明 5.exec/noexec选项说明 挂载就 ...
- Linux下搭建FFmpeg开发调试环境
背景 如果你是一个FFmpeg的使用者,那么绝大部分情况下只需要在你的程序中引用FFmpeg的libav*相关的头文件,然后在编译阶段链接相关的库即可.但是如果你想调试FFmpeg内部相关的逻辑,或者 ...
- SpringCloud升级之路2020.0.x版-37. 实现异步的客户端封装配置管理的意义与设计
本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 为何需要封装异步 HTTP 客户端 WebClient 对于同步的请求,我们使用 spri ...
- [hdu7011]被EI加0了
注意到仅关心于权值大小,预处理出$F_{i}(n)$表示$a_{1},a_{2},...,a_{n}$中恰填$i$种不同的数的方案数,那么显然答案即为$\sum_{i=1} ...
- [bzoj2743]采花
预处理出每一个点下一个相同颜色的位置,记为next,然后将询问按左端点排序后不断右移左指针,设要删除i位置,就令f[next[next[i]]+1,同时还要删除原来的标记,即令f[next[i]]-1 ...