掌握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;当在主库上进行更新后&#…

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;目前这个图在文章中出现的频率相对比较…

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;这里汇总一下。 文献链接&#xff1a;https://excellenceinbreeding.org/sites/default/files/manual/EiB-M2_Herit…

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

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

seo js转码工具

js转码工具作用 用于把js加密 如果不想让别人看到自己的js 代码就可以使用这个方法 js工具网址 https://tool.chinaz.com/js.aspx 效果

【大厂AI课学习笔记NO.74】人工智能产业技术架构

包括基础层、技术层和应用层。 人工智能的产业技术架构是一个多层次、多维度的复杂系统&#xff0c;它涵盖了从基础硬件和软件设施到高级算法和应用技术的全过程。这个架构通常可以分为三个主要层次&#xff1a;基础层、技术层和应用层。下面我将详细论述这三个层次及其细分内…

基于Yolo5模型的动态口罩佩戴识别安卓Android程序设计

禁止完全抄袭&#xff0c;引用注明出处。 下载地址 前排提醒&#xff1a;文件还没过CSDN审核&#xff0c;GitHub也没上传完毕&#xff0c;目前只有模型的.pt文件可以下载。我会尽快更新。 所使用.ptl文件 基于Yolo5的动态口罩佩戴识别模型的pt文件资源-CSDN文库 项目完整文…

升级ChatGPT4.0失败的解决方案

ChatGPT 4.0科普 ChatGPT 4.0是一款具有多项出众功能的新一代AI语言模型。以下是关于ChatGPT 4.0的一些关键特点和科普内容&#xff1a; 多模态&#xff1a;ChatGPT 4.0具备处理不同类型输入和输出的能力。这意味着它不仅可以接收文字信息&#xff0c;还能处理图片、视频等多…

C++17中auto作为非类型模板参数

非类型模板参数是具有固定类型的模板参数&#xff0c;用作作为模板参数传入的constexpr值的占位符。非类型模板参数可以是以下类型&#xff1a; (1).整型&#xff1b; (2).枚举类型&#xff1b; (3).std::nullptr_t&#xff1b; (4).指向对象的指针或引…

vscode中解决驱动编写的时候static int __init chrdev_init()报错的问题

目录 错误出错原因解决方法 错误 在入口函数上&#xff0c;出现 expected a ; 这样的提示 出错原因 缺少了 __KERNEL __ 宏定义 解决方法 补上__KERNEL__宏定义 具体做法&#xff1a;在vscode中按下ctrlshiftp &#xff0c;输入&#xff1a;C/C:Edit Configurations&#xff0…

手把手教使用静默 搭建Oracle 19c 一主一备ADG集群

一、环境搭建 主机IPora19192.168.134.239ora19std192.168.134.240 1.配置yum源 1.配置网络yum源 1.删除redhat7.0系统自带的yum软件包&#xff1b; rpm -qa|grep yum >oldyum.pkg 备份原信息rpm -qa|grep yum|xargs rpm -e --nodeps 不检查依赖&#xff0c;直接删除…

EE5437-IOT(Lecture 07-Control Interface System)

Review&#xff1a; introduce the micro input device system&#xff08;MIDS&#xff09; • The calibration and testing has been covered • The introduction to filters with the example called Butterworth filter and the maths have been also demonstrated. …

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:CalendarPicker)

日历选择器组件&#xff0c;提供下拉日历弹窗&#xff0c;可以让用户选择日期。 说明&#xff1a; 该组件从API Version 10开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 CalendarPicker(options?: CalendarOptions) …