mongodb添加创建修改时间_MongoDB数据库插入、更新和删除操作详解

一、Insert操作

Insert操作是MongoDB插入数据的基本方法,对目标集合使用Insert操作,会将该文档添加到MongoDB并自动生成相应的ID键。文档结构采用类似JSON的BSON格式。常见的插入操作主要有单条插入和批量插入两种形式。插入时只是简单地将文档存入数据库中,不进行额外的验证,也不会执行代码,所以不存在注入式攻击的可能。

1、单条插入

2、批量插入

MongoDB对批量插入的支持是通过传递多个文档组成的数组到数据库来实现的。由于它插入数据是通过发送TCP请求的,这样只需发送单个TCP请求,且数据库无需处理大量的消息头,减少插入时间。这种方式的批量插入一次只能将多个文档插入到一个集合中,对于插入到多个集合可以循环调用Insert操作。

二、Remove操作

remove函数可以用来删除数据,它能接受一个文档作为可选参数,只有符合条件的文档才会被删除。删除数据是永久性的,不能撤销,也不能恢复,需要谨慎。删除文档需要清空整个集合,不如直接删除集合快。

三、Update操作

update函数用于修改数据库中的数据,它接收两个参数,一个是查询文档,用来查找要更新的文档,另一个是修改器文档,用来描述对找到的文档做哪些修改。更新操作是原子性的,如果多个更新同时发生,则所有的更新都会执行,但最后的更新是最终赢家。

1、整体更新(文档替换)

2、局部更新(修改器)

部分更新是通过原子的更新修改器实现的,使用修改器时除了”_id“的值不能改变,其他任何值都能改变。文档替换是可以改变所有值的。

$inc修改器:将指定属性的值增加特定的步长,如果键不存在则创建它。

$set修改器:用来指定一个键的值,如果不存在则创建它。

$push:数组修改器,如果指定的键存在,则向已有的数组末尾加入一个元素,键不存在则会创建一个新的数组。

3、upsert操作

upsert操作具有saveOrUpdate的功能,如果没有文档符合更新条件,则以更新条件和更新文档为基础创建一个新的文档。如果有符合更新条件的文档,则正常更新。创建新文档时会以条件文档作为基础,将修改器作用其之上。upsert操作是原子性的,高效的。

4、批量更新

批量更新只需将update的第4个参数设为true即可。

四、瞬间完成

上面的插入,删除和更新操作都是瞬间完成的,它们不需要等待数据库响应。这样的实现可以获取高性能,速度非常快,只会受客户端发送速度和网络速度的制约。但由于不会获取服务器状态,所以不能保证操作顺利完成。这对于付费系统,安全性较高的系统是不可行的,此时对这些操作需要使用它们的安全版本。安全版本会在操作执行后立即运行getLastError命令,来检查是否执行成功。如果失败一般会抛出可捕获的异常,然后我们可以在代码中处理。

五、请求和连接

数据库会为每个MongoDB数据库连接创建一个队列,存放这个连接的请求,客户端新发送的请求会被放到队列的末尾。只有队列中的请求都执行完毕,后续的请求才会执行。即对于单个连接来说,请求都是顺序执行不存在并发问题,所以它总能读到自己写的东西。但对于不同的连接就有可能出现读取和写入不一致的问题,在驱动程序使用连接池时要特别注意此行为。具体连接池信息可参考官网:MongoDB官网

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

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

相关文章

51单片机怎么显示当前时间_51单片机玩转物联网基础篇06-LCD1602液晶显示器

前言本节我们开始学习LCD1602,LCD1602是字符型液晶显示屏,在实际项目中应用非常广泛,学完本节就可以逐步开发一些好玩的应用了。一、基础知识1.LCD1602简介LCD1602是字符型液晶显示模块,专门用于显示字母、数字、符号等点阵式LCD&…

在JavaScript中以Hours24:Minutes:Seconds格式获取当前时间

使用JavaScript获取当前时间 (Getting current time in JavaScript) To get the current time in JavaScript, we need to use three library functions of Date class, 要获取JavaScript中的当前时间 ,我们需要使用Date类的三个库函数, Date getHours(…

联想服务器如何u盘启动盘装系统,联想如何设置u盘启动

相信有不少网友都在使用联想电脑,它的性价比一直受到不少消费者的青睐。接下来教大家联想如何设置u盘启动,希望大家能喜欢。联想如何设置u盘启动步骤阅读1、按快捷键弹出启动选项,联想笔记本一般是F12或者F22、按TAB键切换App Menu菜单&#…

c语言负数左移右移_C语言 位运算符的运算规则

位运算是指按照二进制进行的运算,在C语言中,提供了6种的位运算符,他们分别是按位与(&),按位或(|),按位异或(^),按位取反&#xff…

Android 带着用户名的SharedPreferences

/*** 设置当前用户的签到信息* account&info;account&info** param context* param sign* author jrjin* time 2016-1-5 下午2:27:47*/public static void setSignInfo(Context context, String sign) {String account getAccount(context);if (TextUtils.isEmpty(acc…

python数据分析与可视化-Python数据分析与数据可视化

数据分析、数据挖掘与数据可视化是一个古老的话题,并非什么新生事物。近些年来,借助于计算机软硬件的飞速发展,数据分析、挖掘、可视化相关理论和技术在各领域的应用更是有了质的飞跃。饭店选址、公交路线与站牌规划、物流规划、春运加班车次…

c语言 函数的参数传递示例_C-用户定义的函数示例,没有参数,没有返回类型...

c语言 函数的参数传递示例Define a function with no argument and no return type in C language. 用C语言定义一个没有参数且没有返回类型的函数。 In the program, we have function named fun1 which has no argument and no return type (void is the return type - that…

的标题形状工具在哪里_自媒体如何搜集素材?标题、文章、图片素材收集3大途径!...

文:老彭自媒体大家好,我是老彭,很多人觉得做自媒体写内容很难,每天想写点东西又感觉无从下手,那么到底是什么原因造成的呢?其实最主要的原因还是自己平时看的太少,和素材储备不足所导致的。大家…

Python中的条件语句(if,if ... else,if ... elif ... else和嵌套的if)

Conditional statements decide the flow of program execution. In programming whenever we need to make execute any special blocks based on the decision then we use the conditional statements. 条件语句决定程序执行的流程。 在编程中,只要我们需要根据决…

控制台应用和空项目有什么区别_在公司做的项目和自己在学校做的有什么区别?...

前言 只有光头才能变强。 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 不知道大家还是学生的时候有没有这个问题:公司做的项目和自己在学校练手的项目有多大的区别。我以前在学校跟着视频做一些项目练手,总感觉公司做的东西会要难很多,不知…

小样本点云深度学习库_合成鲁棒的对抗样本来欺骗深度学习分类器

本期一诺sec关注深度学习系统安全问题,推荐一篇来自ICML 2018会议论文Synthesizing Robust Adversarial Examples。论文链接http://proceedings.mlr.press/v80/athalye18b.html。深度模型对于对抗样本具有高度的脆弱性,这已经是得到大家印证的事实。自从…

stl字符串去除空格_在列表中推送字符并在C ++ STL中将它们打印为空格

stl字符串去除空格In this example, we are declaring a character list and pushing the characters from A to Z using a for loop and push_back() function then printing the value of the vector separated by space. 在此示例中,我们声明了一个字符列表&…

java数据类型_JAVA基础篇(数据类型)

首先请大家想想这几个问题:1.java数据类型是什么?2.Java数据类型有什么用?上一节(JAVA基础篇(函数))有个add函数,里面有两个int类型,int类型就是整数的意思,这…

SharePoint CAML In Action——Part I

阅读目录 CAML In Action接下来在SharePoint中&#xff0c;我们经常要对List进行操作&#xff0c;比如要从List中取出相应的ListItem&#xff0c;利用CAML是个好办法。在没了解CAML之前&#xff0c;我是这样取数据的&#xff1a; MyList.Items.Cast<SPListItem>().ToList…

地图统计_博客 城市访问量统计并且通过Echarts+百度地图展示

本篇讲解一下 如何在Vue 中使用 Echarts 百度地图 统计 博客访问量 并且通过QQWry 解析 ip 地址 利用Echarts 展示出来效果图如下&#xff1a;1.纯真Ip地址库 QQWry这是我在github上找的 java版本的 解析 qqwry的1.1 maven 引入 qqwry<dependency> <grou…

修改console缓存大小_更改缓存的行大小将如何影响其他参数?

修改console缓存大小Prerequisites: Memory mapping and its types 先决条件&#xff1a; 内存映射及其类型 While designing a cache system of a PC, the size of cache lines is an important parameter. 在设计PC的缓存系统时&#xff0c;缓存行的大小是重要的参数。 In …

win10必须禁用的服务_Win10系统中这3个无用的设置,奉劝你还是早点关闭吧!

在PC端所有的操作系统中&#xff0c;占据市场份额最大的莫过于微软发布的windows系统。其中最经典的莫过于XP和win7&#xff0c;无奈微软已经停更了这两个操作系统&#xff0c;所以为了电脑的安全着想&#xff0c;很多人都直接升级更新至最新版的win10系统&#xff0c;目前win1…

Android 布局练习

要求&#xff1a;使用多种布局完成以下练习。 1.要求效果 完成效果 代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <…

有危害吗_涂料漆对身体有害吗?涂料漆危害怎么预防

目前很多人都会通过涂料漆来进行墙面装饰&#xff0c;用它来对墙面进行装饰是可以马上的改善墙壁的状态&#xff0c;但有些人也担心它会对身体有害&#xff0c;涂料漆对身体有害吗?由于担心涂料漆会给健康带来危害&#xff0c;很多人都想要预防&#xff0c;那涂料漆危害怎么预…

小写大写转换_小写到大写转换器JavaScript工具| 网络应用项目

小写大写转换Hi! At times, beginners always find it hard getting the application of the theory they learn in programming or a particular language. 嗨&#xff01; 有时&#xff0c;初学者总是很​​难在编程或特定语言中应用他们学到的理论。 In this article, well…