mongo基本操作---文档的增删改查

news2024/12/26 12:10:54

4、CRUD

mongo数据库和平时常见的关系型数据库一样,最基本的操作就是增删改查,唯一的区别就是叫法不一样

SQL术语/概念MongoDB术语/概念解释/说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据记录行/文档
columnfield数据字段/域
indexindex索引
table joins表连接,MongoDB不支持
primary keyprimary key主键,MongoDB自动将_id字段设置为主键

4.1 插入文档

插入文档本质就是向集合中插入数据,用关系型数据库的语句解释就是向数据表中插入数据

语法

#单个插入

db.collection_Name.insertOne(document)

#多个插入

db.collection_Name.insertMany([document])

例子:

#单个插入
db.test1.insertOne({name:"mongo",type:1,value:1})
#多个插入
db.test1.insertMany([
       {
         name:"mysql",
         type:2,
         value:2
       },{
         name:"oracle",
         type:3,
         value:3
       },{
         name:"nosql",
         type:4,
         value:4
       },{
         name:"xiaoming",
         sex:"男",
         age:20,
         address:"江苏省南京市浦口区××××××苑×××××单元×××××楼×××××××户"
       }
       ]
)

# 查看集合中的文档
db.test1.find()

在这里插入图片描述

4.2 更新文档

更新文档本质就是更新文档中的数据,用关系型数据库的语句解释就是更新数据表中的数据

```语法:`

#单行更新

db.test1.updateOne(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

#多行更新

db.test1.updateMany(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

参数说明

  • query : update的查询条件,类似sql update查询内where后面的。
  • update : 更新的内容,也可以理解为sql update查询内set后面的
  • upsert : 可选,默认是false,即当更新的条件不存在时不插入,true为插入,即当更新的条件不存在时,也插入数据。
  • multi : 可选,默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :可选,抛出异常的级别。

例子:

  1. 不插入只更新第一条记录

    db.test1.updateOne({name:"mongo"},{$set:{type:99}})
    

在这里插入图片描述

  1. 不插入只更新所有匹配条件的文档
db.test1.updateMany({name:"redis"},{$set:{type:111}})

在这里插入图片描述

4.3 查询文档

查询文档本质就是查询文档中的数据,用关系型数据库的语句解释就是查询数据表中的数据

语法

db.collection_name.find()

4.3.1 普通查询

普通查询:根据具体的某个条件进行查找

例子:

#查找集合中全部的文档
db.test1.find()

在这里插入图片描述

#查找名字为mongo的文档
db.test1.find({name:"mongo"})

在这里插入图片描述

#查找值为空的文档
db.test1.find({value:null})

在这里插入图片描述

4.3.2 模糊查询

在对数据库中的数据进行操作时,我们经常会使用到模糊查找,在mongo中也支持模糊查找,需要使用到$regex

例子

#查找名字中包含m的文档
db.test1.find({name:{$regex:/m/}})

在这里插入图片描述

#查找名字以m开头的文档
db.test1.find({name:{$regex:/^m/}})

在这里插入图片描述

4.3.3 条件查询

在对数据库中的数据进行操作时,我们经常会使用到条件查找,在mongo中也支持条件查找
在这里插入图片描述

例子

#查询类型不为111的文档
db.test1.find({type:{$ne:111}})

在这里插入图片描述

#查询类型不为111且名字已m开头的文档
db.test1.find({type:{$ne:111},name:{$regex:/^m/}})

在这里插入图片描述

#插叙名字为mongo或者type为空的文档
db.test1.find({
  $or:
    [
      {name:"mongo"},
      {type:null}
    ]
})

在这里插入图片描述

#插叙名字为mongo或者type为空且value为1的文档
db.test1.find({
  $or:
    [
      {name:"mongo"},
      {type:null}
    ],
    value:1
})

在这里插入图片描述

4.4.4 投影查询

MongoDB 中的投影即查询指定的字段,而不是直接查询文档的全部字段。1标识显示,0标识隐藏

语法

db.ollection_name.find({file:1,file2:0})

例子

#插叙名字为mongo或者type为空且value为1的文档,要求只展示名字和类型
db.test1.find({
  $or:
    [
      {name:"mongo"},
      {type:null}
    ],
    value:1
},{_id:0,name:1,type:1})

在这里插入图片描述

4.4.5 限制查询

mongo中的限制查询就是限制查询出来数据的数量

语法

db.test1.find().limit(count)

参数说明

count:需要限制的条数

例子:

#限制输出2条
db.test1.find().limit(2)

在这里插入图片描述

4.4.6 跳跃查询

mongo中的跳跃查询是指跳过指定的条数,然后查找满足条件的文档

语法

db.test1.find().skip(count)

参数说明

count:跳过的条数

例子

#跳过前两条
db.test1.find().skip(2)

在这里插入图片描述

#跳过前两条查找,并且返回3条数据,
db.test1.find().skip(2).limit(3)
#跳过前两条查找,并且返回3条数据
db.test1.find().limit(3).skip(2)

在聚合查询时,limit和skip有先后顺序关系

在这里插入图片描述

4.4.7 排序查询

排序查询是指将查询的结果进行排序, 其中 1 为升序排列,而 -1 是用于降序排列。

语法

db.COLLECTION_NAME.find().sort({KEY:1})

例子

db.test1.find().sort({name:-1})

在这里插入图片描述

4.4. 删除文档

在mongo中删除文档是指删除集合中的数据

语法

单个删除

db.collection.deleteOne(filter, options)

多个删除

db.collection.deleteMany(filter, options)

参数说明

  1. filter参数用于指定需要删除的文档条件
  2. options参数可以用于指定一些额外选项

例子

db.test1.deleteOne({type:null})
db.test1.deleteMany({type:null})

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

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

相关文章

韦东山Linux驱动入门实验班(1)hello驱动

前言 &#xff08;1&#xff09;学习韦东山老师的Linux&#xff0c;因为他讲的很精简&#xff0c;以至于很多人听不懂。接下来我讲介绍韦东山老师的驱动实验班的第一个Hello程序。 &#xff08;2&#xff09;注意&#xff0c;请先学习完视频再来看这个教程&#xff01;本文仅供…

AD9680+JESD204B接口+FPGA FMC高速率数据采集板卡

板卡概述&#xff1a; 【FMC_XM155】 FMC_XM155 是一款基于 VITA57.1 标准的&#xff0c;实现 2 路 14-bit、500MSPS/1GSPS/1.25GSPS 直流耦合 ADC 同步采集 FMC 子卡模 块。 该模块遵循 VITA57.1 规范&#xff0c;可直接与 FPGA 载卡配合使用&#xff0c;板 卡 ADC 器件采用…

CIE颜色空间LCh、Lab、XYZ介绍与转换关系(包含源码)

项目场景&#xff1a; 提示&#xff1a;在颜色科学中&#xff0c;LCh和Lab是比较常用的 LCh是由MATLAB计算出的数据&#xff0c;但是我所需要在Qt的q3dsurface绘制出这个切面&#xff0c;看了Qt官方Examples&#xff0c;墨西哥草帽算法的3D模型就是由XYZ组成的。所以我需要LC…

【c语言】组件化打包—静态库

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c语言系列专栏&#xff1a;c语言之路重点知识整合 &#x…

MacOS使用Parallels Desktop安装win11虚拟机

文章目录 前话一、安装Parallels Desktop二、安装Windows11虚拟机1.win11镜像下载2.虚拟机启动 三、创建过程问题解决1.安装win11系统的时候不显示网路2.系统安装完成后无法连接网络 三、参考文献 前话 为了让大家能快速获取到需要的内容&#xff0c;这里提前说明一下本文适用…

杂记——23.java中的值传递和应用传递

这篇文章我们来讲一下java中的值传递和引用传递 结论&#xff1a;java中只存在值传递&#xff0c;不存在引用传递&#xff08;C中有引用传递&#xff09; 分析&#xff1a; 值传递(pass by value)&#xff1a;在调用函数时&#xff0c;将实际参数复制一份传递到函数中&#…

用DevExpress WinForms富文本编辑器,集成高级文本编辑功能(二)

DevExpress WinForm富文本编辑器&#xff08;RTF编辑器&#xff09;控件允许用户将高级文本编辑功能集成到下一个WinForms项目中&#xff0c;它包括全面的文本格式选项、支持邮件合并&#xff0c;并附带了丰富的终端用户选项集&#xff0c;因此可以轻松交付受Microsoft word启发…

助力工业物联网,工业大数据之数仓维度层DWS层构建【十二】

文章目录 数仓维度层DWS层构建01&#xff1a;项目回顾02&#xff1a;项目目标03&#xff1a;维度建模回顾&#xff1a;建模流程04&#xff1a;维度建模回顾&#xff1a;维度设计05&#xff1a;维度建模回顾&#xff1a;维度模型 数仓维度层DWS层构建 01&#xff1a;项目回顾 O…

《现代中学生》期刊简介及投稿要求

《现代中学生》期刊简介及投稿要求 《现代中学生》 主管单位&#xff1a;吉林省教育厅 主办单位&#xff1a; 吉林教育杂志社 国际刊号ISSN&#xff1a;1009-5748&#xff1b;国内刊号CN&#xff1a;22-1046/G4&#xff1b;邮发代号&#xff1a;12-52 出版周期&#xff1a…

刷题day65:整数拆分

题意描述&#xff1a; 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。. 思路&#xff1a; 首先dp[i]代表将i拆分&#xff0c;并得到的最大乘积&#xf…

springboot+jsp高校招生宣传系统java校园网站

学校招生管理系统的用户是系统最根本使用者&#xff0c;按需要分析系统包括两类用户&#xff1a;学生、管理员。这两类用户对系统的功能简要如下。 管理员通过后台的登录页面&#xff0c;选择管理员权限后进行登录&#xff0c;管理员的权限包括招生计划管理、招生录取信息管理和…

知识变现海哥:我们不生产知识,我们只是知识的搬运工!

现在大家都在谈知识付费&#xff0c;而且有一些东西就是书本上有的&#xff0c;但被录制成视频&#xff01;加上专业的讲师去讲&#xff0c;配上PPT文档&#xff0c;然后发布出去&#xff0c;标上一定的价格后&#xff0c;就会有人去付费购买学习。 想想是不是很暴利&#xff1…

如何使用ArcGIS生成随机数

&#xff08;本文首发于“水经注GIS”公号&#xff0c;关注公号免费领取地图数据&#xff09; 在制图的过程中&#xff0c;制作某些效果需要根据字段的随机数来生成对应的颜色&#xff0c;所以需要操作字段生成随机数&#xff0c;这里为大家介绍一下ArcGIS生成随机数的方法&…

对话金现代|轻骑兵低代码开发平台,破局企业“数字化焦虑

当今世界正经历百年未有之大变局&#xff0c;大数据、云计算、区块链、人工智能等新技术飞速发展&#xff0c;越来越多的企业经营者&#xff0c;开始投入到数字化转型的浪潮中&#xff0c;期望通过数字化帮助企业实现业务增长&#xff0c;开启无限可能。但随着时间的推移&#…

基于平台视角下的数据交易模式及特点分析

基于平台视角下的数据交易模式及特点分析 陈宏民1, 熊红林1, 胥莉1&#xff0c;杨云鹏1, 卓训方2 1 上海交通大学安泰经济与管理学院&#xff0c;上海 200030 2 上海数据交易所有限公司&#xff0c;上海 201203 摘要&#xff1a;基于国内外数据交易市场的发展现状与平台思维视角…

用GDB调试cmake编译后的C++程序

文章目录 编译时添加参数用GDB运行程序参考 编译时添加参数 cmake -DCMAKE_BUILD_TYPEDebug <path and other arguments>用GDB运行程序 开始调试 start设置断点&#xff0c;这样会在运行到源码第6行时停止&#xff0c;可以查看变量的值、堆栈情况等&#xff1b;这个行…

71.建立一个轮播图组件第二部分

这节课我们通过绝对定位的方式来实现上一届未实现的内容&#xff01; ● 首先我们先设置一下button和图标 /* CONTROLS */.btn {background-color: #fff;border: none;height: 40px;width: 40px;}.btn-icon {height: 24px;width: 24px;}● 接着我们来设置绝对定位 .carousel {p…

如何在 FPGA 中做数学运算

FPGA 非常适合进行数学运算&#xff0c;但是需要一点技巧&#xff0c;所以我们今天就看看如何在 FPGA 中进行简单和复杂的数学运算。 介绍 由于FPGA可以对算法进行并行化&#xff0c;所以FPGA 非常适合在可编程逻辑中实现数学运算。我们可以在 FPGA 中使用数学来实现信号处理、…

Java进阶-面向对象进阶(static和继承)

1 复习回顾 1.1 如何定义类 类的定义格式如下: 修饰符 class 类名 {// 1.成员变量&#xff08;属性&#xff09;// 2.成员方法 (行为) // 3.构造方法 &#xff08;初始化类的对象数据的&#xff09; }例如: public class Student {// 1.成员变量public String name ;public…

简易axure设计原型流程

我们这里做的是移动端的项目&#xff0c;基于提供的参考视频&#xff0c;截图了app的图片&#xff0c;作为实现原型时候的背景图。 原来实现的移动端的项目是基于vant开发的&#xff0c;因而下载了vant的元件库。参考地址: Vant 4 - A lightweight, customizable Vue UI libr…