掌握Mongodb,看完这篇文章就够了

目录

1.概念       

2.操作 

2.1数据库操作

2.2集合操作

2.3数据操作 

3.查询

4.常用技术

5.python与MongoDB


1.概念       

         MongoDB是一种非关系型数据库(NoSQL),它以灵活的文档存储格式(BSON)和强大的查询能力而闻名,类似json,不支持表连接。

  1. 文档(Document):MongoDB中的数据存储单位,类似于关系型数据库中的行。文档是以BSON(Binary JSON)格式表示的,可以容纳不同结构和类型的数据。

  2. 集合(Collection):一组相关文档的集合,类似于关系型数据库中的表。每个集合都有一个唯一的名称,用于组织和存储文档。

  3. 字段:字段是文档中存储数据的基本单位,类似于关系型数据库中的列。

2.操作 

       检测是否安装MongoDB: win+r,输出cmd,输入mongo

2.1数据库操作

 显示所有数据库 show dbs (只显示非空数据库)

创建数据库  use 数据库名(如果该数据库不存在,则会创建;存在就直接切换)
 删除数据库 ,先切换到数据库, db.dropDatabase()

2.2集合操作

    创建集合 db.createCollection("集合名") 不需要创建,使用时会自动创建
    删除集合  db.集合名.drop()
    查看所有集合  show collections 

2.3数据操作 

1.查询数据
        find 找到所有

                db.teacher.find()
        findOne 只找一个

 

    2. 插入
        insert 可以插入一个或多个
                db.teacher.insert({"name":"t2"})
        insertOne 可以插入一个
        insertMany 可以插入多个

 

    3. 删除
        deleteOne  删除一个
                db.teacher.deleteOne({"name":"t2"})
        deleteMany 删除多个

 

     4. 修改
        update 修改一个
                db.teacher.update({"age":21},{$set {"name":"t3"}})
        updateOne 修改一个
        updateMany 修改多个

3.查询

1.比较运算符
        $gt >  find({"字段":{$gt : 20}})
        $gte >=
        $lte <=
        $lt <
        $ne  !=
   2. 逻辑运算符
        并且  {“key”:value,"key":value}
        或者 {$or:[{"age":20},{"age":15}]}
        find($or:[{"age":20},{"age":15}])
   3. 成员
        $in db.teacher.find({"age":{$in : [21,30]}})
  4. 正则
        db.teacher.find({"name":/.3/})
        db.teacher.find({"name":/^t/}) name以t开头
        db.teacher.find({"name":/.\d/}) 数字
    5.自定义 find({$where:function(){ return this .age < 20}})

4.常用技术

      1.排序
         db.teacher.find().sort({"字段":1,   "字段":-1})
        1升序     -1降序
    2.分页
        .limit(n) 显示n页
                db.teacher.find().limit(2)
        .skip(m)  显示m个
                db.teacher.find().limit(1).skip(2)
    3.统计
        .count()
            db.teacher.find().count()
        .find()可有可无
   4. 投影
        find({},{列名:1,   列名2: 0})
            1显示列 ,_id默认显示
            0不显示列
                db.teacher.find({},{"_id":0})
   5. 聚合
        对数据处理,将上一阶段的处理结果转交给下一个集合
        aggregate
            $match  过滤
                    db.teacher.aggregate([{"$match":{"name":"t1"}}])
            $group 分组
                    db.teacher.aggregate([{"$group":{_id:"$name"}}]) 

5.python与MongoDB

1.使用模块pymongo
        pip insatll mongo
2.使用流程
        导入模块:import pymongo
        创建连接:client = pymongo.MongoClient()
        找到数据库:db = client.get_database("myk")
        找到集合:collection = db.get_collection("teacher")
        CURD:增删改查

        关闭连接:client.close()

# 1.导入模块
import pymongo# 2.构件连接
client = pymongo.MongoClient()# 3.找数据库
db = client.get_database("myk")
# 4. 集合
collection = db.get_collection("teacher")# 5.查找
cursor = collection.find({"$or": [{"age": 21}, {"age": {"$gte": 18}}]})
for data in cursor:print(data)data = collection.find_one({"$or": [{"age": 21}, {"age": {"$gte": 18}}]})
print(data.get("age"))# 文档
document = collection.find_one_and_delete({"age": 18})
print(document)document = collection.find_one_and_update({"age": 30}, {"$set": {"name": "t4"}})
print(document)# 6.插入
result = collection.insert_one({"name": "t2"})
print(result.inserted_id)result = collection.insert_many([{"age": 45}, {"age": 45, "name": "t2"}])
print(result.inserted_ids)# 7.更新
result = collection.update_one({"age": 45}, {"$set": {"name": "t5"}}, upsert=True)
print(result.matched_count, result.modified_count, result.upserted_id)result = collection.update_many({"age": {"$gt": 10}}, {"$set": {"name": 100}})# 8.删除
result = collection.delete_one({"age":45})
print(result.deleted_count)result = collection.delete_many({"age":45})
print(result.deleted_count)# 释放连接
client.close()


        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/737447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MinGW-w64的下载与安装

文章目录 1 下载2 安装3 配置环境变量4 验证 1 下载 官网地址&#xff1a;https://www.mingw-w64.org/github地址&#xff1a;https://github.com/niXman/mingw-builds-binaries/releases windows下载 跳转github下载 版本号选择&#xff1a;13.2.0是GCC的版本号&#xff1b…

如何避免MYSQL主从延迟带来的读写问题?

在MYSQL 部署架构选型上&#xff0c;许多公司都会用到主从读写分离的架构&#xff0c;如下是一个一主一从的架构&#xff0c;主库master负责写入&#xff0c;从库slave进行读取。 但是既然是读写分离&#xff0c;必然会面临这样一个问题&#xff0c;当在主库上进行更新后&#…

010-$nextTick

$nextTick 1、问题2、$nextTick3、应用场景 1、问题 Vue 实现响应式&#xff0c;在 data 更新后&#xff0c;一定时间内&#xff0c;没有继续操作DOM&#xff0c;然后会触发浏览器渲染引擎去更新DOM&#xff0c;更新DOM也是需要时间的&#xff0c;所以 data 更新引起的 DOM更新…

FreeRTOS学习第9篇--队列介绍

目录 FreeRTOS学习第9篇--队列介绍1. 数据传输的方法1.1 任务之间如何传输数据1.2 队列的本质 2. 队列的工作原理和实现2.1 创建队列2.2 向队列发送数据2.3 从队列接收数据 3. 使用队列进行任务间的通信3.1 通信示例3.2 同步示例 结论 FreeRTOS学习第9篇–队列介绍 本文目标&a…

《C++游戏编程入门》第1章 类型、变量与标准I/O: Lost Fortune

《C游戏编程入门》第1章 类型、变量与标准I/O: Lost Fortune 1.1.1 使用C编写游戏1.1.2 生成可执行文件1.1.3 错误处理 1.2 第一个C程序01.game_over.cpp01.game_over2.cpp01.game_over3.cpp 1.4 使用算术运算符01.expensive_calculator.cpp 1.5 声明和初始化变量01.game_stats…

minimap2参数设置+解释【全网最详细】

Indexing -H: 使用同源聚合的k-mer(适用于PacBio数据) -k INT: k-mer的大小(不超过28)【默认值:15】 -W INT: minimizer窗口大小【默认值:10】 -I NUM: 每个~NUM输入碱基分割索引【默认值:4G】 -d FILE: 将索引转储到文件中 Mapping: -f FLOAT: 过滤掉顶部FLOAT比例的重…

【设计模式】概述及七大设计原则

设计模式 什么是设计模式 设计模式是前辈们对代码开发经验的总结&#xff0c;是解决一些特定问题的一系列套路。不是语法规定&#xff0c;也是一套用来提高代码复用性、可维护性、可读性、健壮性和安全性的解决方案。 学习设计模式的意义 设计模式的本质是面向对象设计原则…

QML | 在QML中导入JavaScript资源、导入JavaScript资源、包含一个JavaScript 资源

01 在QML中导入JavaScript资源 JavaScript资源可以被QML文档和其他JavaScript通过相对或者绝对路径进行导入。如果使用相对路径,位置解析需要相对于包含import语句的QML文档或JavaScript资源的位置。如果JavaScript需要从网络资源中进行获取,组件的status属性会被设置为Loadi…

PyCM:Python中的混淆矩阵库

PyCM&#xff1a;Python中的混淆矩阵库 在机器学习和数据科学领域&#xff0c;评估模型的性能是至关重要的。混淆矩阵是一种常用的评估工具&#xff0c;用于可视化和量化分类模型的预测结果。PyCM是一个开源的Python库&#xff0c;提供了丰富的功能来计算和分析混淆矩阵。本文将…

【C++】STL(二) string容器

一、string基本概念 1、本质 string是C风格的字符串&#xff0c;而string本质上是一个类 string和char * 区别&#xff1a; char * 是一个指针 string是一个类&#xff0c;类内部封装了char*&#xff0c;管理这个字符串&#xff0c;是一个char*型的容器。 2、特点 1、stri…

R语言绘制桑基图教程

原文链接&#xff1a;R语言绘制桑基图教程 写在前面 在昨天3月10日&#xff0c;我们在知乎、B站等分享了功能富集桑基气泡图的绘制教程。相关链接&#xff1a;NC|高颜值功能富集桑基气泡图&#xff0c;桑基气泡组合图。 确实&#xff0c;目前这个图在文章中出现的频率相对比较…

【SQL实用技巧】-- 连续N天登陆问题

连续N天登录问题 以下为用户登陆日期&#xff0c;用一条 SQL 语句查询出连续三天登录的人员姓名。 nameddate张三2021-01-01张三2021-01-02张三2021-01-03张三2021-01-02李四2021-01-01李四2021-01-02王五2021-01-03王五2021-01-02王五2021-01-02 数据准备 create table ga…

Wilson威尔逊平滑

1、威尔逊平滑引入的动机 在曝光很少的情况下&#xff0c;计算出的CTR并不真实可靠&#xff0c;而样本数越大&#xff0c;CTR的比例才越准确&#xff0c;更能反应真实情况。 为了衡量样本数对于CTR信区间的影响&#xff0c;我们引入"威尔逊&#xff08;Wilson&#xff0…

地球系统模式(CESM)

目前通用地球系统模式&#xff08;Community Earth System Model&#xff0c;CESM&#xff09;在研究地球的过去、现在和未来的气候状况中具有越来越普遍的应用。CESM由美国NCAR于2010年07月推出以来&#xff0c;一直受到气候学界的密切关注。近年升级的CESM2.0在大气、陆地、海…

STM32CubeMX 配置 STM32F103 工程:通过DAC输出正弦波

说明&#xff1a;STM32CubeMX 配置 STM32F103 工程&#xff0c;通过DAC输出正弦波&#xff0c;参考代码可自动计算频率&#xff0c;自动计算正弦数据。 先参考这篇文章配置时钟、工程输出的设置&#xff1a; STM32CubeMX 配置 STM32F103 工程&#xff1a;通过DAC生成三角波、…

【其他】清风眼中的《妙手仁心》

我是清风&#xff0c;一个以医生为正职&#xff0c;平时喜欢写点文字的男人。人家喜欢把我称为作家&#xff0c;可是我觉得我还配不上这个称呼。因为我所记录的只是一些身边的人和事&#xff0c;所抒发的也只是一些个人的情感&#xff0c;这与“作家”二字相去甚远。有人也许会…

【Go】探索Go语言中的关于defer的应用

冬来的秋去 像记忆裂痕 又再变更空枕触遗憾 半梦半醒侵沾眼晴的泪痕 每晚夜深妄想真情接近 绻梦绻恋一宵雨侵悲不禁 永远最相衬 但愿梦里是永恒 ——《永远之后-黄艺明》 在Go语言中&#xff0c;defer语句是一个非常强大且常用的特性&#xff0c;它允许我们在函数结束时执行一些…

【输入】NTC热敏电阻B值计算程序

两个主要的步骤&#xff1a; 设计分压器电路来测量NTC&#xff08;负温度系数热敏电阻&#xff09;的阻值。编写C语言函数来使用测量的阻值和NTC参数计算温度。 首先&#xff0c;让我们设计分压器电路。 分压器电路设计 您需要一个已知阻值的参考电阻&#xff0c;通常推荐与…

关于遗传力常见的误解

大家好&#xff0c;我是邓飞&#xff0c;今天看了一篇非常好的文章&#xff0c;介绍了遗传力相关概念和计算方法&#xff0c;里面提到了常见的误解&#xff0c;这里汇总一下。 文献链接&#xff1a;https://excellenceinbreeding.org/sites/default/files/manual/EiB-M2_Herit…

STM32CubeMX学习笔记20——SD卡FATFS文件系统

1. FATFS文件系统简介 文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构&#xff08;即在存储设备上组织文件的方法&#xff09;。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统&#xff0c;简称文件系统&#xff1b;不带文件系统的SD卡仅能…