MongoDB文档插入

news/2024/9/23 5:19:19/

文章目录

    • 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.ppmy.cn/news/1356762.html

相关文章

ubuntu22.04@laptop OpenCV Get Started: 012_mouse_and_trackbar

ubuntu22.04laptop OpenCV Get Started: 012_mouse_and_trackbar 1. 源由2. mouse/trackbar应用Demo2.1 C应用Demo2.2 Python应用Demo 3. 鼠标位置跟踪注释3.1 注册回调函数3.2 回调操作3.3 效果 4. 使用轨迹栏调整图像大小4.1 初始化轨迹栏&注册回调函数4.2 回调操作4.3 效…

CSS学习(三)

目录&#xff1a; 1. CSS引入方式 1.1 三种样式表 1.2 内部样式表&#xff08;嵌入式引入&#xff09; 1.3 行内样式表&#xff08;内联样式表&#xff09; 1.4 外部样式表 1.5 总结 1. CSS引入方式 1.1 三种样式表 1.2 内部样式表&#xff08;嵌入式引入&#xff09; …

算法沉淀——递归(leetcode真题剖析)

算法沉淀——递归 01.汉诺塔问题02.合并两个有序链表03.反转链表04.两两交换链表中的节点05.Pow(x, n) 递归是一种通过调用自身的方式来解决问题的算法。在递归算法中&#xff0c;问题被分解为更小的相似子问题&#xff0c;然后通过对这些子问题的解进行组合来解决原始问题。递…

【C语言】Leetcode 27.移除元素

一、代码实现 如果不考虑O(1)的空间复杂度的话我们可以再创建数组来进行遍历解决该问题&#xff0c;但是在要求之下该做法无法通过。于是我们可以用双指针来解决&#xff0c;最坏的情况时间复杂度为O(N)。 int removeElement(int* nums, int numsSize, int val) {int src 0;…

频谱仿真平台HTZ Communications为私有5G建设铺平道路

韩国的国家监管机构韩国通信委员会&#xff08;KCA&#xff09;计划在德思特频谱仿真平台HTZ Communications的支持下加快扩大无线电接入范围&#xff0c;提升全国电信服务的质量和效率。 韩国通信委员会&#xff08;KCA&#xff09;在韩国的监管环境中扮演着至关重要的角色&am…

文件包含+文件上传漏洞(图片马绕过)

目录 一.文件包含二.文件上传三.图片马四.题目 一.文件包含 将已有的代码以文件形式包含到某个指定的代码中&#xff0c;从而使用其中的代码或者数据&#xff0c;一般是为了方便直接调用所需文件&#xff0c;文件包含的存在使得开发变得更加灵活和方便&#xff08;若对用户输入…

二维码钓鱼激增587%:用户陷入社交诈骗陷阱!

Check Point软件技术公司发布的新研究揭示了典型的QR码攻击&#xff0c;通过Check Point的实时网络威胁地图&#xff0c;在两周内发现了2万起QR码钓鱼和恶意软件攻击事件&#xff0c;突显了QR码在网络犯罪分子面前的脆弱性。 QR码是"Quick Response Code"&#xff08…

大学搜题软件普通物理?推荐你使用这六个公众号和工具 #媒体#经验分享

当今社会&#xff0c;技术的发展给我们带来了许多便利&#xff0c;包括了许多实用的学习工具。 1.千鸟搜题 这是一个公众号 职业考试题库&#xff0c;如会计师资格证&#xff0c;教师资格证等&#xff1b; 下方附上一些测试的试题及答案 1、铁路机车、客车、货车、动车、动…