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. 全志Tina_dolphin播放音视频裸流(h264,pcm)验证

    最近在验证tina对裸流音视频的支持,主要指h264视频裸流及pcm音频裸流. 在原始sdk中有针对很多video和audio类型的parser,但就是没有找到pcm和h264的parser,所以需要 ...

  2. Luogu P2467 [SDOI2010]地精部落 | 神奇的dp

    题目链接 DP 题目大意:给定一个数n,求1~n这n个整数的所有排列中有多少个波动数列,将这个数量%p后输出. 什么是波动数列呢?顾名思义,就是一个大.一个小.一个大.一个小--或者是一个小.一个大. ...

  3. Linux 文本三剑客之 grep

    Linux 系统中一切皆文件. 文件是个文本.可以读.可以写,如果是二进制文件,还能执行. 在使用Linux的时候,大都是要和各式各样文件打交道.熟悉文本的读取.编辑.筛选就是linux系统管理员的必 ...

  4. vue中main.js配置后端请求地址

    Vue.config.productionTip = false; axios.defaults.baseURL = 'http://127.0.0.1:8003/';//后端开发环境地址 // ax ...

  5. lombok标签之@Data @AllArgsConstructor @@NoArgsConstructor -如何去除get,set方法。@Data注解和如何使用,lombok

    在代码中我们可以只加上标签@Data 而不用get,set方法: val : 和 scala 中 val 同名, 可以在运行时确定类型; @NonNull : 注解在参数上, 如果该类参数为 null ...

  6. [第二章]c++学习笔记3(构造函数)

    成员函数的一种 (1)名字与类名相同,可以有参数,不能有返回值(void也不行) (2)作用是对对象初始化,如给成员变量赋初值 (3)如果定义类时没写构造函数,则编译器生成一个默认的无参数的构造函数( ...

  7. Qt概要

    Qt是面向对象的框架,使用特殊的代码生成扩展以及一些宏.是一个跨平台的C++图形用户界面.它是一款可以轻松的帮我们做界面的软件. Qt是1991年奇趣科技公司(2008 年 6 月被诺基亚收购)开发的 ...

  8. Java String 转成 二位数组

    ... package str; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; impo ...

  9. 不可忽视的Dubbo线程池

    问题描述 线上突然出现Dubbo超时调用,时间刚好为Consumer端设置的超时时间. 有好几个不同的接口都报超时了 第1次调用超时,第2次(或第3次)重试调用非常快(正常水平) Dubbo调用超时的 ...

  10. [tc13008]Egalitarianism2

    考虑对于$n-1$个数$a_{i}$,函数$f(x)=\frac{\sum_{i=1}^{n-1}(x-a_{i})^{2}}{n-1}$的最小值恰在$x=\frac{\sum_{i=1}^{n-1} ...