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. Vue3.x 关于组件的那些变化(新手必看篇)

    一.组件内的 data 为什么总是函数形式? 我们试着先做一个计数器案例,把 data 的返回形式修改成一个对象.具体的代码如下: <template> <div> <b ...

  2. 折腾systemd-nspawn运行centos7

    Archlinux创建Debian/Ubuntu的systemd-nspawn容器是很简单的,因为有debootstrap软件.某天我突然想装个centos7玩玩,搜了半天没发现有什么类似于deboo ...

  3. Labview一个循环中放两个事件结构会导致前面板锁定的问题

    建议在同一个循环中,只放置一个事件结构.此时,当一个事件发生时,事件结构将对事件进行处理,然后继续循环,事件结构再等待下一个事件发生. 如在同一个循环中放置两个事件结构,只有在两个事件结构都处理了事件 ...

  4. Linux&c 文件操作,线程进程控制,网络编程,简单知识点梳理

    一:文件操作 在linux下,一切皆文件,目录是文件,称为目录文件,内容是该目录的目录项(但是目录只有内核可以编辑,超级用户也不可以编辑),设备也是设备文件,在/dev存放的就是一些设备文件,linu ...

  5. 解决虚拟机linux系统全屏问题

    修改设置 1) 如下图右单击虚拟机名,选择[settings-],调出虚拟机设置界面. 2) 在设置界面选择[hardware]->[CD/DVD2(IDE)]->[Connection] ...

  6. Java基础复习之数组

    Java基础复习之:数组 简介 数组(Array):多个相同数据类型按照一定顺序排列的集合,并使用一个名字命名,通过编号的方式对这些数据进行统一管理 一维数组 一维数组的声明与初始化 int[] id ...

  7. LeetCode 114. 二叉树展开为链表 C++

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...

  8. 暑假算法练习Day2

    第二天啦!大家一起冲冲冲!! 1004 成绩排名 (20 分) 读入 n(>0)名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式: 每个测试输入包含 1 个测试用 ...

  9. 升级npm后版本依然没有变 原来是全局npm设置的锅

    最近准备给家里的老爷机打一个 react 的环境 win7系统还不算老~ 不过!由于很多年以前装的node了版本很低,所以赶紧去官网 下了一个 最新的稳定版本的. 卸载和安装都费了老大力了. 以为光明 ...

  10. C++和Java中的i+++i++

    1 public class Cd { 2 public static void main(String[]args){ 3 int i = 50 ; 4 System.out.println(i++ ...