Python中MongoDB的使用方法

2023-11-19

一、MongoDB是什么

        在百度上查询的时候主要看到三个关键字,数据库、非关系型、查询功能强大。总结为查询功能强大的非关系型数据库。什么是数据库,应该是用来存储数据的,非关系型的意思???不不不,关系型的意思我都不懂,查询功能强大的意思应该是查询起来很方便,应该有很多不同的方法的来查询需要的数据。


二、为什么使用MongoDB

        简而言之就是MongoDB有什么优点,你以为我会很正经的列出一大堆理由????不不不,我会告诉你选择MongoDB的原因是我在看《用Python学网络爬虫》!!!!!里面就用到了MongoDB!!!!!


三、MongoDB怎么在Python中使用

        正文终于开始了!!!!!!大家快拿小本本,把知识点记起来!!!!!因为我的最终目的是为了实现《用Python写网络爬虫》的代码,所以就直接写pymongo的用法了,至于怎么安装和配置会在另外一篇文章中介绍,谁叫我是为了看懂代码,连MongoDB都还没安装就来吹MongoDB怎么使用呢。。。。。

1、怎么连接MongoDB

from pymongo import MongoClient

client = MongoClient('localhost',27017)

上述代码的意思是MongoDB连接上本地主机,端口号为27017

2、怎么获得数据库

db = client.primer

cache是数据库的名字,可以随便取

3、怎么获得集合

collection = db.students

4、查看数据库中的所有集合

db.collection_names()

5、怎么删除一个集合

db.collection.drop()

    collection是集合的名字

6、怎么查看集合中的数据数目

db.collection.count()

7、怎么插入数据

db.students.insert()

db.students.insert_one()

db.stendents.insert_many([])

    暂时发现的就只有这三种方法,三种方法返回的类型并不一样。

    insert()返回值是‘_id’的值,若‘_id’缺省,'_id'的值为bson.objectid的ObjectId。该方法可以插入多条数据也可以直插入一条数据。

    insert_one()返回值是InsertOneResult,可以根据dir()查看该对象的属性值

    insert_many()能一次插入多条数据,返回值是InsertManyResult对象。

8、怎么删除集合中的数据

remove()

delete_one()

delete_many()

    remove()能只删除一条数据,也可以删除多条数据,参数是query,即匹配条件。返回值是字典,可以查看删除了多少条数据。当需要只删除一条数据时,multi=False,默认值为True。

    delete_one和delete_many顾名思义,和删除多条或单条数据的remove一样,只不过返回值为DeleteResult

9、怎么更新数据

update()

find_and_modify()

    我觉得两个方法都是一样的,但是update可以更改多条数据,find_and_modify就算添加multi=True同样不能更新多条数据。所以下面主要讲update方法。

    update的第一个参数是query,即查询条件,第二个是更新内容,第三个是upsert,第四个是multi。upsert是若匹配的数据没有更新属性,则添加,否则不更新该属性。multi为True时,能更新所有匹配数据。upsert在没有使用‘$set’的时候,会吧更新内容替代匹配数据,慎用!!!!

    $set                更新任意字段

db.students.update(
    {'age':{'$lt':28}},
    {'$set':{'age':26}},
     upsert=True,
     multi=True
)

    $unset            删除任意字段

 
db.students.update(
    {},
    {'$unset':{'age':1}},
     upsert=True,
     multi=True
)


$push                在特定字段追加内容

        若该字段存在,则在后面追加内容,若不存在则添加仅有该追加内容的数组,若字段存在但值不为数组,则报错。

db.students.update(
    {},
    {'$push':{'new':4}},
     upsert=True,
     multi=True
)

$pushAll        在特定字段追加数组,与$push使用方法一致

$addToSet    在特定字段追加内容,与$push一样一样的!

$pop            在特定字段删除内容

$pull            在特定字段删除内容,与$pop一样

$pullAll        在特定字段删除内容,内容为数据


10、怎么查找数据

find(query,projection)

query是查找条件

        projection可以选择显示那些键,有两种模式,第一种是需要显示的字段置1,其他字段均不显示;第二种是不需要显示的字段置0,显示其他字段。两种模式不能混用。

db.students.find(
    {},
    projection = {
        'age' : 1,
        'name' : 1
    }
)


11、比较符号

$lt                   <

$gt                  >

$lte                 <=

$gte                >=

$eq                  =

$ne                   !=


12、逻辑符号

$and                    逻辑与            a == True    and    b == True

$or                       逻辑或            a == True    or    b == True

$not                     逻辑非            a != True

$nor                     逻辑非或        a != True    or    b != True


13、Element

$exists                  判断某个字段是否存在

db.students.find(
    {
         'age'{'$exists':1}
     }
)

$type                    判断某个字段值得类型

db.students.find(
    {
         'age'{'$type':1}
     }
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python中MongoDB的使用方法 的相关文章

随机推荐

  • uniapp 用 uView 组件库中的u-picker 实现地区的 省-市-区 三级联动

    组件的引入就不多赘述了 直接看使用方法 地址我是引入的json文件数据结构大概是这个样子 例1 例2 1 先做个按钮做弹窗显示
  • linux-malloc底层实现原理

    本文大致讲解一下linux下malloc的底层实现原理 首先malloc肯定是从堆中分配内存 而堆又在用户空间中占据什么位置 通过下面这张图可以看出来 很明显是32位系统 寻址空间是4G linux系统下0 3G是用户模式 3 4G是内核模
  • python itertools模块chain函数功能详解 itertools.chain(*iterable)

    Itertools模块 itertools提供了高效快捷的用于操作迭代对象的函数 通过使用这个模块 可以简化代码 Itertools chain语法 Itertools chain iterables 代表接受可变的参数 iterables
  • 数字图像去噪典型算法及matlab实现

    转自 http gaochaojs blog 51cto com 812546 243961 图像去噪是数字图像处理中的重要环节和步骤 去噪效果的好坏直接影响到后续的图像处理工作如图像分割 边缘检测等 图像信号在产生 传输过程中都可能会受到
  • MAC下如何删除idea

    MAC下如何删除idea 进入访达 点击应用程序列表 找到idea 右键或者拖动到废纸篓 打开终端 进入自己用户名下的Library目录 一般刚打开就在自己用户名下 cd Users 你的用户名 Library 使用cd命令分别进入Logs
  • BUUCTF-EasySQL

    这是一道蛮基础的sql注入的题 打开题目 一个具有黑客色彩的登陆页面 emm 没有注册窗口 在用户名或密码处加个单引号发现报错 判断是字符型注入 通过万能密码登陆注入进去 username admin or 1 1 password 拿到f
  • 出现org.apache.http.NoHttpResponseException

    摘要 spring resttemplate使用httpclient4 4 连接池 出现org apache http NoHttpResponseException 10 0 0 25 8080 failed to respond异常的解
  • YOLOV5加速之TensorRT篇

    之前写过一篇Android版本yolov5s的博客 最近工作搞了下TensorRT 也遇到几个坑不过最终还是实现了 做一下小小的分享 这里直接上github上大牛的连接 我的代码是在他的基础上改的 里面有很多模型的加速直接看里面的yolov
  • 如何利用JS生成二维码

    问题来源 最近在做一个项目 有这么个需求 通过生成二维码来实现网页的分享 问题分析 脑海的第一反应 当然是用js来实现 自己手写 当然不是 解决方案 使用 QRCode js QRCode js 是一个用于生成二维码的 JavaScript
  • Unity 游戏背景音乐突然消失,AudioSource却还在游戏场景中(更新中)

    查看AudioSource isVirtual 是否为True 如果是则音效被系统剔除 音效被系统剔除原因 1 音效某一时刻播放的次数太多
  • BrokenPipeError: [Errno 32] Broken pipe

    BrokenPipeError Errno 32 Broken pipe 前言 今天在训练yolov5 6 1版本 突然出现BrokenPipeError Errno 32 Broken pipe错误 一 运行命令python train
  • Qt5.9.1安装包下载

    一 下载地址 附上百度网盘下载链接链接 https pan baidu com s 1wwvHe5kHwSg68hy1YM6Lhg 提取码 a999 二 安装步骤 选中qt opensource windows x86 5 9 1 exe右
  • xss-工具-Beef-Xss安装以及使用

    Beef Xss工具的简介 KaliLinux官网对这工具的介绍地址 https www kali org tools beef xss GitHub地址 https github com beefproject beef Beef Xss
  • 如何解决stata数据管理器中变量变红的问题

    目标 解决open变量变红的问题 网上说可以通过以下代码解决 实际上是缘木求鱼 encode encode 红色数字的变量名 gen 新产生的变量名 自己尝试用这个代码之后 发现对应变量不是红色了 但变成了蓝色 我开始以为问题已经解决了 但
  • Spring Security,没有看起来那么复杂(附源码)

    权限管理是每个项目必备的功能 只是各自要求的复杂程度不同 简单的项目可能一个 Filter 或 Interceptor 就解决了 复杂一点的就可能会引入安全框架 如 Shiro Spring Security 等 其中 Spring Sec
  • margin:0 auto是什么意思

    margin是外边距的意 当一个元素样式属性里有dumargin 0 auto时 并且父元素的宽度是确定的 意思是这个元素处于其父元素的居中位置 并且这个元素的上下外边距为0 即 上下外边距为0 左右自动 实际效果为左右居中 补充 marg
  • 缺少msvcp120.dll、msvcr120.dll解决办法

    缺少msvcp120 dll msvcr120 dll解决办法 丢失或缺少msvcp120 dll msvcr120 dll等这些报错是因为我们没有安装vc 运行库 看一下报错对应的数字对应的版本 msvcp msvcr60 71和80 d
  • Python--内建函数大全

    Python 解释器内置了许多函数和类型 列表如下 按字母排序 省略了几个我没用过或者不常用的 内建函数表 abs delattr hash memoryview set
  • 结构体排序------蓝桥杯

    题目 给出 nn 个人的语文 数学 英语的成绩 你需要把他们的成绩降序输出 排序的规则 先按总分排序 如果总分相等 就按语文成绩降序排序 如果语文成绩还相等 就按数学成绩降序排序 如果数学成绩还相等 就按姓名字典序升序排序 输入 第一行是一
  • Python中MongoDB的使用方法

    一 MongoDB是什么 在百度上查询的时候主要看到三个关键字 数据库 非关系型 查询功能强大 总结为查询功能强大的非关系型数据库 什么是数据库 应该是用来存储数据的 非关系型的意思 不不不 关系型的意思我都不懂 查询功能强大的意思应该是查