( 八 )、 MongoDB 文档的插入、更新、删除
( 八 )、 MongoDB 文档的插入、更新、删除
1、简介
官网: https://docs.mongodb.com/manual/crud/
本章节我们介绍 对 mongoDB 集合中的 数据进行增删改查操作。文档的数据结构和 JSON 基本一样,所有存储在集合中的数据都是 BSON 格式,BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。
2、插入文档
MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:
db.COLLECTION_NAME.insert(document)
或
db.COLLECTION_NAME.save(document)
- save():如果 _id 主键存在则更新数据,如果不存在就插入数据。该方法新版本中已废弃,3.2 版本之后可以使用 db.collection.insertOne() 或 db.collection.replaceOne() 来代替。
- insert(): 若插入的数据主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常,提示主键重复,不保存当前数据。
2.1、db.collection.insertOne() 用于向集合插入一个新文档,语法格式如下:
db.collection.insertOne(
<document>,
{
writeConcern: <document>
}
)
2.2、db.collection.insertMany() 用于向集合插入一个多个文档,语法格式如下:
db.collection.insertMany(
[ <document 1> , <document 2>, ... ],
{
writeConcern: <document>,
ordered: <boolean>
}
)
参数说明:
- document:要写入的文档。
- writeConcern:写入策略,默认为 1,即要求确认写操作,0 是不要求。
- ordered:指定是否按顺序写入,默认 true,按顺序写入。
示例:
>db.myTest.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: 'dwTest',
tags: ['mongodb', 'database', 'NoSQL']
})
以上实例中 myTest 是我们的集合名,如果该集合不在该数据库中, MongoDB 会自动创建该集合并插入文档。
3、更新操作
MongoDB 使用 update() 方法来更新集合中已存在的文档,语法格式如下:
db.collectionName.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
参数说明:
- query : update的查询条件,类似 sql update 查询内 where 后面的。
- update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
- upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入。 默认是 false,不插入。
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录。如果这个参数为true,就把按条件查出来多条记录全部更新。
- writeConcern :可选,抛出异常的级别。
示例:
db.MyTest.update({'title': 'MongoDB 教程'}, {$set:{'title': 'I love MongoDB'}})
更新 title = 'MongoDB 教程' 的数据, 更新成 title = 'I love MongoDB'。
更新多条:
db.myTest.update({'title':'MongoDB 教程'} , {$set:{'title':'I love MongoDB'}}, {multi:true})
4、删除操作
remove() 函数是用来移除集合中的数据。语法格式如下所示:
db.collectionName.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
参数说明:
- query :(可选)删除的文档的条件。
- justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
- writeConcern :(可选)抛出异常的级别。
示例:
4.1、删除所有满足条件的:
db.col.remove({'title':'MongoDB 教程'})
4.2、删除1条
db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
4.3、删除所有数据
db.myTest.remove({})