在MongoDB中进行倒置的方法

47 阅读1分钟

关于MongoDB的全面概述以及我所有关于它的帖子,请查看我的概述

upserting是MongoDB支持的一个数据库概念,它结合了插入和更新。为了在更新操作中执行upsert,你必须向update,updateOne, 或updateMany 方法传递一个额外的参数。

随着给定的数据被插入到一个叫做users 的集合中:

db.users.insertMany([
	{
		_id: 1,
		name: "John Doe",
		email: "doe@doe.com",
		admin: true
	},
	{
		_id: 2,
		name: "Jane Doe",
		email: "jane@doe.com",
		admin: true
	},
	{
		_id: 3,
		name: "Billy Bob",
		email: "billy@bob.com",
		admin: false
	},
	{
		_id: 4
		name: "Steve Stevenson",
		email: "steve@test.com",
		admin: true
	},
])

如果使用下面的命令:

db.users.updateOne({_id: 5}, {$set: {admin: true}})

它不会做任何事情,因为没有符合_id = 5 的查询的文档。

如果 upserting 被启用:

db.users.updateOne(
	{_id: 5},
	{ $set: { admin: true } },
	{ upsert: true }
)

因为没有与查询相匹配的文档,所以使用给定的_id 和更新操作的结果插入一个新的文档。

使用find方法从MongoDB中读回数据以检查集合:

db.users.find()

将产生:

{
	_id: 1,
	name: "John Doe",
	email: "doe@doe.com",
	admin: true
},
{
	_id: 2,
	name: "Jane Doe",
	email: "jane@doe.com",
	admin: true
},
{
	_id: 3,
	name: "Billy Bob",
	email: "billy@bob.com",
	admin: false
},
{
	_id: 4
	name: "Steve Stevenson",
	email: "steve@test.com",
	admin: true
},
{
	_id: 5
	admin: true
}