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入门的更多相关文章

  1. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  2. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  3. Oracle分析函数入门

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

  4. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  5. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

  6. Angular2入门系列教程4-服务

    上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...

  7. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  8. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

  9. wepack+sass+vue 入门教程(一)

    一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...

随机推荐

  1. linux updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'

    我们想查找我们最新创建的文件时,由于locate的数据库是每天更新.所以我们新创建的文件还没有被更新到系统的数据库. 这是需要手动更新数据库. 然后就可以查到. updatedb 输出 updated ...

  2. 使用.NET6打造动态API

    ApiLite是直接将Service层自动生成api路由,可以不用添加Controller,支持模块插件化,在项目开发中能够提高工作效率,降低代码量. 开发环境 .NET SDK 6.0.100-rc ...

  3. 使用google zxing生成二维码图片

    生成二维码工具类: 1 import java.awt.geom.AffineTransform; 2 import java.awt.image.AffineTransformOp; 3 impor ...

  4. 你们不要再吵了! Java只有值传递..

    写在前边 上次聊到Java8新特性 lambda时,有小伙伴在评论区提及到了lambda对于局部变量的引用,补充着博客的时候,知识点一发散就有了这篇对于值传递还是引用传递的思考.关于这个问题为何会有如 ...

  5. 这些年我@yangbodong22011参与的开源

    2020年第一天,水一篇博客,对新年起码的尊重.这里记录下我参与的开源项目情况. Talk is cheap. Show me the code Linus Torvalds Jedis PR:htt ...

  6. 『学了就忘』Linux基础命令 — 37、Linux中挂载操作的相关命令

    目录 1.mount命令介绍 (1)mount命令说明 (2)mount命令格式 2.mount命令示例 3.mount -a命令说明 4.-o特殊选项说明 5.exec/noexec选项说明 挂载就 ...

  7. Linux下搭建FFmpeg开发调试环境

    背景 如果你是一个FFmpeg的使用者,那么绝大部分情况下只需要在你的程序中引用FFmpeg的libav*相关的头文件,然后在编译阶段链接相关的库即可.但是如果你想调试FFmpeg内部相关的逻辑,或者 ...

  8. SpringCloud升级之路2020.0.x版-37. 实现异步的客户端封装配置管理的意义与设计

    本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 为何需要封装异步 HTTP 客户端 WebClient 对于同步的请求,我们使用 spri ...

  9. [hdu7011]被EI加0了

    注意到仅关心于权值大小,预处理出$F_{i}(n)$​​​​表示$a_{1},a_{2},...,a_{n}$​​​​中恰填$i$​​​​​​种不同的数的方案数,那么显然答案即为$\sum_{i=1} ...

  10. [bzoj2743]采花

    预处理出每一个点下一个相同颜色的位置,记为next,然后将询问按左端点排序后不断右移左指针,设要删除i位置,就令f[next[next[i]]+1,同时还要删除原来的标记,即令f[next[i]]-1 ...