MongoDB——插入操作详解

插入文档

向集合中插入一条或多条文档。语法:
db.collection.insert(
	{
    
    
		//可选字段
		writeConcern:<document>
		ordered: <boolean>
	},
	{
    
    
		//可选字段
		writeConcern:<document>
		ordered: <boolean>
	},
	...
)

db为数据库名,collection为集合名,insert为插入文档命令。

可选字段:

  • writeConcern:自定义写出错确认级别
  • ordered:当值为false时,忽略文档错误,继续执行数组中文档的无序插入。true时(默认值),执行文档中的有序插入,如果某个文档发生错误,命令将返回,不再处理。

返回值:

  • insert插入成功,返回插入文档对象WriteResult({"nInserted":1})
  • insert插入失败,返回结果中会包含WriteResult.writeConcernError对象字段内容,需要与writeConcern配合使用

说明:

  • insert命令,自动产生一个_id值
  • insert命令可以用save命令代替。若给save命令指定_id值,则会更新默认的_id值,例如:db.a.save({_id:1001,x:"OK"})
  • 如果没有指定的集合对象,则第一次insert时自动建立集合;若存在集合,则变成多条文档的集合

插入一条简单文档:
在这里插入图片描述
在这里插入图片描述

插入一条复杂文档:
在这里插入图片描述
在这里插入图片描述

  • insert插入值里可以嵌套文档
  • insert命令也可以包含数组,用于记录分类等信息
  • 文档数据库接受数据冗余问题
  • 如果执行过程出现类似SyntaxError:missing;before statement @(shell)则是输入语法结果存在问题

插入多条文档:

在这里插入图片描述

用变量方式插入文档:

在这里插入图片描述

有序插入多条文档:

在这里插入图片描述

假设在person集合里已经有_id:11的一条记录。那么在执行上述命令时,命令执行将失败。也就是一条文档在_id相同的情况下不能重复插入。

  • 在ordered:true时:如果发生错误,就会终止后面的插入

在这里插入图片描述

  • 在ordered:false时:除了出错记录外,其它记录继续插入

在这里插入图片描述

简化的插入命令

从3.2版本开始,MongoDb支持两种新的文档插入命令:

  1. 一次插入一条数据:db.collection.insertOne()

在这里插入图片描述
在这里插入图片描述

  1. 一次插入多条数据:db.collection.insertMany()

在这里插入图片描述

向数组中添加元素

如果数组已经存在,"$push"会向已有数组末尾加入一个元素
在这里插入图片描述

使用"$each"子操作符,可以通过一次"$push"操作添加多个值:
在这里插入图片描述

如果希望数组的最大长度是固定的,那么可以将"$slice"和"$push"组合在一起使用,这样就可以保证数组不会超出指定的最大长度:

在这里插入图片描述

数组只包含最后加入的10个元素。"$slice"的值必须是负整数。

可以在清理元素之前使用"$sort",只要向数组中添加子对象就需要清理:

db.movies.update(
	{
    
    "genre":"horror"},
	{
    
    
		"$push":{
    
    
			"$each":[
				{
    
    "name": "Nightmare on Elm Street", "rating": 6.6},
				{
    
    "name": "Saw", "rating" :4.3}
			],
			"$slice": -10,
			"$sort": {
    
    "rating": -1}
		}
	}
)

这样会根据"rating"字段的值对数组中所有对象进行排序,然后保留前10个。
注意:不能只将"$slice"或者"$sort""$push"配置使用,且必须使用"$each"

将数组作为数据集使用

将数组作为数据集使用,保证数组内的元素不会重复,可以用"$ne"来实现

在这里插入图片描述

也可以使用$addToSet来实现:
在这里插入图片描述

$addToSet$push组合起来可以实现添加多个不同的值:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/cold___play/article/details/121391248
今日推荐