上面的更新方法传入的参数如下:
(1) 过滤条件文档:类似于sql的where,决定更些哪些文档
(2) 更新文档:类似于sql的set,指定要执行的修改或替换文档
(3) 选项文档:若包含upsert:true,当没有匹配到文档则会创建一个新文档并插入字段
更新文档中指定的字段:
使用$set操作符更新favorites.artist字段为"Pisanello",更新type字段值为3.
使用$currentDate 操作符更新 lastModified 字段的值到当前日期。如果 lastModified 字段不存在, $currentDate 会创建该字段。下面若使用updateOne函数则只会更新匹配得到的第一个文档
db.users.updateMany(
{ "favorites.artist": "Picasso" },
{
$set: { "favorites.artist": "Pisanello", type: 3 },
$currentDate: { lastModified: true }
}
)
若使用update函数来进行更新操作,则需要在选项文档中添加multi:true来指定更新单条还是所有的数据,默认更新单条数据
db.users.update(
{ "favorites.artist": "Pisanello" },
{
$set: { "favorites.food": "pizza", type: 0, },
$currentDate: { lastModified: true }
},
{ multi: true }
)
文档替换:使用replaceOne函数进行替换操作:将name为abc匹配到的第一个文档替换为新文档
db.users.replaceOne(
{ name: "abc" },
{ name: "amy", age: 34, type: 2, status: "P", favorites: { "artist": "Dali", food: "donuts" } }
)
若update函数不使用操作符则会执行替换操作
db.users.update(
{ name: "xyz" },
{ name: "mee", age: 25, type: 1, status: "A", favorites: { "artist": "Mati", food: "ma" } }
)
注意:替换文档可以不同于原文档的字段。在替换文档中由于_id字段是不变的所以可以省略_id字段,若包含,则值必须和当前值相同
==========================================================================================
④删除文档:
上面的过滤参数和查询的时候相同,remove方法将<justone>参数设置为1来删除匹配到的第一个文档,默认会删除所有匹配到的文档
MongoDB入门教程到此结束,接下来会有MongoDB和springboot项目的集成使用案例