MongoDB文档插入

文章目录

    • MongoDB文档插入
      • 对比增删改查
      • 文档插入
    • MongoDB写安全机制
      • 非确认式写入
    • MongoDB文档查询
      • 参数说明
      • 查询操作符
        • 比较查询操作符
        • 逻辑查询操作符
        • 元素查询操作符
        • 数组查询操作符
      • 模糊查询
        • 区别:
        • $regex操作符中的option选项
    • MongoDB游标介绍
      • 游标函数
      • 手动迭代游标示例
      • 游标介绍

MongoDB文档插入

对比增删改查

在这里插入图片描述

文档插入

  • 参数说明:
    • document:要写入的文档。
    • writeConcern:可选,写入策略,默认为 1,即要求确认写操作,0 是不要求。
    • ordered:可选,指定是否按顺序写入,默认 true,按顺序写入
  • db.collection.insertOne() 用于向集合插入一个新文档
  • 语法格式如下:db.collection.insertOne(,{writeConcern:} )
  • db.collection.insertMany() 用于向集合插入多个文档
  • 语法格式如下:db.collection.insertMany([<document 1>,<document 2>, … ],{writeConcern:,ordered: })

MongoDB写安全机制

  • 写入安全机制(Write Concern)是一种由客户端设置的,用于控制写入安全级别的机制,通过使用写入安全机制可以提高数据的可靠性。
  • MongoDB提供了四种写入级别,分别是:
    • 非确认式写入
    • 确认式写入
    • 日志写入
    • 复制集确认式写入

非确认式写入

写操作不会返回任何结果,对于写操作,在没有得到服务器写入确认的情况下就立即返回,所以无法知道是否写入成功。
在这里插入图片描述

MongoDB文档查询

参数说明

  • query :可选,使用查询操作符指定查询条件
  • projection :可选,是否返回该字段,0代表不返回,1代表返回,语法格式:{field:0}或{field:1},查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。db.student.find({“age”:{$lt:22}},{“_id”:0, “name”:1})
  • options:可选,指定查询的其他选项,这些选项能够改变查询的行为和返回的结果。
    • limit指定查询返回结果数量的上限skip:跳过一定数据量的结果,设置第一条返回文档的偏移量
    • sort:对查询结果进行排序
  • find参数为空或者查询条件为空文档时,会返回集合中所有的文档。例如:db.student.find()或db.student.find({})
  • 如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:db.col.find().pretty()
  • findOne()只会返回第一条数据

查询操作符

比较查询操作符

在这里插入图片描述

逻辑查询操作符

在这里插入图片描述

元素查询操作符

在这里插入图片描述

数组查询操作符

在这里插入图片描述

  • 查询数组中的元素(普通元素),包含两种情况:
    • 与位置无关,查询数组中含有某个值的元素,例如:db.student.find({score: 60})
    • 与位置有关,按照指定的数组索引查询数组元素的值(使用点号操作符) 例如:db.student.find({‘scores.2’: 60})
  • 数组元素是文档时,包含两种情况:
    • 与位置无关,查询数组中满足条件的子文档元素,例如:db.student.find({“score.成绩”:80})
    • 与位置有关,按照指定的数组索引查询数组子文档,例如:db.student.find({“scores.2.成绩”:95})

模糊查询

regex操作符
{:{$ regex:/pattern/,$ options:‘’}}
{:{$ regex:‘pattern’,$ options:‘’}}
{:{$ regex:/pattern/}}
正则表达式对象
{: /pattern/}

区别:
  • 在$ in操作符中只能使用正则表达式对象
    例如:{name:{$in:[/joe/i,/jack/}}
  • 在使用隐式的$ and操作符中,只能使用$ regex
    例如:{name:{$regex:/^jo/i, $nin:[‘john’]}}
  • 当option选项中包含x或s选项时,只能使用$ regex
    例如:{name:{$ regex:/m.*line/,$options:“si”}}
$regex操作符中的option选项

可以改变正则匹配的默认行为,它包括i, m, x以及s四个选项,其含义如下:

  • i 忽略大小写 {{$regex/pattern/i}}
    • 设置i选项后,模式中的字母会进行大小写不敏感匹配。
  • m 多行匹配模式,{{$ regex/pattern/,$options:'m’}
    • m选项会更改^和$元字符的默认行为,分别使用与行的开头和结尾匹配,而不是与输入字符串的开头和结尾匹配。
  • x 忽略非转义的空白字符:{$ regex:/pattern/,$options:'x‘}
    • 设置x选项后,正则表达式中的非转义的空白字符将被忽略,同时#被解释为注释的开头 注:只能显式位于option选项中。
  • s 单行匹配模式{:{$ regex:/pattern/,$options:'s‘}
    • 设置s选项后,会改变模式中的点号(.)元字符的默认行为,它会匹配所有字符,包括换行符(\n),只能显式位于option选项中。
  • i,m,x,s可以组合使用例如:{name:{ r e g e x : / j ∗ k / , regex:/j*k/, regex:/jk/,options:“si”}}
  • 在设置索引的字段上进行正则匹配可以提高查询速度,而且当正则表达式使用的是前缀表达式时,查询速度会进一步提高 例如:{name:{$regex: /^joe/}

MongoDB游标介绍

用find函数进行查询时,MongoDB并不是一次返回结果集中的所有文档,而是以多条文档的形式分批来返回查询结果,返回的文档会缓存到内存中。
在这里插入图片描述

游标函数

在这里插入图片描述

手动迭代游标示例

var myCursor = db.users.find( { type: 2 } );
while (myCursor.hasNext()) {printjson(myCursor.next());
}var myCursor =  db.users.find( { type: 2 } );myCursor.forEach(printjson);

游标介绍

  • 默认情况下,服务器将在闲置10分钟后或客户端遍历完后自动关闭游标。 如果要取消游标超时自动销毁,可以使用cursor.noCursorTimeout()方法
  • 设置noCursorTimeout选项后,必须使用cursor.close()手动关闭游标,或者遍历完游标的结果。
  • db.serverStatus() 方法返回的文档中包含了metrics字段,metrics字段中的cursor字段包含了游标的一些信息
    • 自上次服务器重新启动以来超时的游标数
    • 设置了选项DBQuery.Option.noTimeout的打开游标的数量,以防止一段时间不活动后发生超时
    • "固定"打开游标的数量
    • 打开的游标总数
    • db.serverStatus().metrics.cursor { "timedOut" : <number> "open" : { "noTimeout" : <number>, "pinned" : <number>, "total" : <number> } }

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

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

相关文章

韶音获36氪年度企业称号,开放式创新成年度焦点

近日,在36氪的商业之王大会上,年度开放式创新企业、年度新经济高成长企业等榜单揭晓,阿里云、保时捷、美的、蚂蚁集团、科大讯飞等纷纷上榜,而运动耳机的领导品牌Shokz韶音,以其在开放式/不入耳耳机领域深厚的积累,同样获奖。韶音运动舒适耳机新推出的爆款产品——不入耳蓝牙耳…

2024国产中文免费版数据恢复软件EasyRecovery易恢复专业版

EasyRecovery易恢复专业版是全球最好的数据恢复软间&#xff0c;文件恢复专家。EasyRecovery是一款操作安全、价格便宜、用户自主操作的非破坏性的只读应用程序&#xff0c;它不会往源驱上写任何东西&#xff0c;也不会对源驱做任何改变。它支持从各种各样的存储介质恢复删除或…

软件实例分享,操作简单美发店会员登记记账本vip会员管理系统软件教程

软件实例分享&#xff0c;操作简单美发店会员登记记账本vip会员管理系统软件教程 一、前言 以下软件程序教程以 佳易王美发店会员管理系统软件V16为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、新会员可以直接使用手.机号&#xff0c;不需…

202427读书笔记|《猫的自信:治愈系生活哲学绘本》——吸猫指南书,感受猫咪的柔软慵懒与治愈

202427读书笔记|《猫的自信&#xff1a;治愈系生活哲学绘本》——吸猫指南书&#xff0c;感受猫咪的柔软慵懒与治愈 《猫的自信&#xff1a;治愈系生活哲学绘本》作者林行瑞&#xff0c;治愈系小漫画绘本&#xff0c;10分钟可以读完的一本书&#xff0c;线条明媚&#xff0c;自…

从零开始学习Netty - 学习笔记 - NIO基础 - ByteBuffer: 简介和基本操作

NIO基础 1.三大组件 1.1. Channel & Buffer Channel 在Java NIO&#xff08;New I/O&#xff09;中&#xff0c;“Channel”&#xff08;通道&#xff09;是一个重要的概念&#xff0c;用于在非阻塞I/O操作中进行数据的传输。Java NIO提供了一种更为灵活和高效的I/O处理方…

【Redis,Java】Redis的两种序列化方式—nosql数据库

redis和mysql的区别&#xff1a; redis是属于nosql的数据库&#xff0c;而mysql是属于sql数据库&#xff0c;redis是属于nosql数据库。mysql是存储在磁盘中的&#xff0c;redis是存储在内存中的&#xff0c;所以redis的读取书读快。这里所说的redis代表nosql&#xff0c;而mysq…

【打工日常】使用docker部署可视化工具docker-ui

一、docker-ui介绍 docker-ui是一个易用且轻量化的Docker管理工具&#xff0c;透过Web界面的操作&#xff0c;方便快捷操作docker容器化工作。 docker-ui拥有易操作化化界面&#xff0c;不须记忆docker指令&#xff0c;仅需下载镜像即可立刻加入完成部署。基于docker的特性&…

数据分析 - 机器学习

1&#xff1a;线性回归 线性回归是一种统计技术用于对输出变量与一个或多个输入变量之间的关系进行建模 用外行人的话来说&#xff0c;将其视为通过某些数据点拟合一条线&#xff0c;如下所示 以便在未知数据上进行预测&#xff0c;假设变量之间存在线性关系 点和线之间存在微小…

OpenCV中的边缘检测技术及实现

介绍: 边缘检测是计算机视觉中非常重要的技术之一。它用于有效地识别图像中的边缘和轮廓&#xff0c;对于图像分析和目标检测任务至关重要。OpenCV提供了多种边缘检测技术的实现&#xff0c;本博客将介绍其中的两种常用方法&#xff1a;Canny边缘检测和Sobel边缘检测。 理论介…

MySQL5.7升级到MySQL8.0的最佳实践分享

一、前言 事出必有因&#xff0c;在这个月的某个项目中&#xff0c;我们面临了一项重要任务&#xff0c;即每年一次的等保测评整改。这次测评的重点是Mysql的一些高危漏洞&#xff0c;客户要求我们无论如何必须解决这些漏洞。尽管我们感到无奈&#xff0c;但为了满足客户的要求…

Guitar Pro8最新版本版本有哪些功能更新?

Guitar Pro 8的最新版本相较于之前的版本&#xff0c;有以下显著的功能更新&#xff1a; 音频轨道功能&#xff1a;这是Guitar Pro 8中一个非常实用的新功能。用户现在可以在GTP文件中添加伴奏音轨&#xff0c;无论是人声还是完整的录音&#xff0c;都可以与编写的谱子同时播放…

区块链革命:Web3如何改变我们的生活

随着技术的不断发展&#xff0c;区块链技术作为一种去中心化的分布式账本技术&#xff0c;正逐渐成为数字世界的核心。Web3作为区块链技术的重要组成部分&#xff0c;正在引领着数字化时代的变革&#xff0c;其影响已经开始渗透到我们生活的方方面面。本文将深入探讨区块链革命…

Maven属性scope

参考&#xff1a; maven 中 scope标签的作用&#xff08;runtime、provided、test、compile 的作用&#xff09; 【Maven】属性scope依赖作用范围详解 scope为provided

python工具方法 45 基于ffmpeg以面向对象多线程的方式实现实时推流

1、视频推流 参考基于ffmpeg模拟监控摄像头输出rtsp视频流并opencv播放 实现视频流的推流。 其基本操作就是,安装视频流推流服务器,ffmpeg,准备好要推流的视频。 命令如下所示:ffmpeg -re -stream_loop -1 -i 风景视频素材分享.flv -c copy -f rtsp rtsp://127.0.0.1:554/…

探索AI视频生成新纪元:文生视频Sora VS RunwayML、Pika及StableVideo——谁将引领未来

探索AI视频生成新纪元&#xff1a;文生视频Sora VS RunwayML、Pika及StableVideo——谁将引领未来 sora文生视频&#xff0c;探索AI视频生成新纪元 由于在AI生成视频的时长上成功突破到一分钟&#xff0c;再加上演示视频的高度逼真和高质量&#xff0c;Sora立刻引起了轰动。在S…

瑞_23种设计模式_代理模式

文章目录 1 代理模式&#xff08;Proxy Pattern&#xff09;1.1 介绍1.2 概述1.3 代理模式的结构 2 静态代理2.1 介绍2.2 案例——静态代理2.3 代码实现 3 JDK动态代理★★★3.1 介绍3.2 代码实现3.3 解析代理类3.3.1 思考3.3.2 使用 Arthas 解析代理类3.3.3 结论 3.4 动态代理…

19. 【Linux教程】nano 编辑器

前面小节介绍了如何使用 vim 编辑器&#xff0c;相比于 vim 编辑器&#xff0c;nano 编辑器就比较简单了。nano 是 UNIX 系统中的一个文本编辑器&#xff0c;大部分 Linux 发行版本默认都安装了 nano 文本编辑器。 和 vim 编辑器相比&#xff0c;nano 编辑器就没有那么强大&am…

【算法】约瑟夫环问题解析与实现

一、导言 约瑟夫环&#xff08;Josephus Problem&#xff09;是一个经典的数学问题&#xff0c;涉及一个编号为 1 到 n 的人围成一圈&#xff0c;从第一个人开始报数&#xff0c;报到某个数字 m 的人出列&#xff0c;然后再从下一个人开始报数&#xff0c;如此循环&#xff0c…

阿里云服务器操作系统有哪些?如何选择?

阿里云服务器镜像怎么选择&#xff1f;云服务器操作系统镜像分为Linux和Windows两大类&#xff0c;Linux可以选择Alibaba Cloud Linux&#xff0c;Windows可以选择Windows Server 2022数据中心版64位中文版&#xff0c;阿里云服务器网aliyunfuwuqi.com来详细说下阿里云服务器操…

神经网络——循环神经网络(RNN)

神经网络——循环神经网络&#xff08;RNN&#xff09; 文章目录 神经网络——循环神经网络&#xff08;RNN&#xff09;一、循环神经网络&#xff08;RNN&#xff09;二、循环神经网络结构1、一对一&#xff08;One to One&#xff09;2、一对多&#xff08;One to Many&#…