mongodb 插入/更新/删除 文档
插入文档
db.collection.insertOne() 用于向集合插入一个新文档,如下:
db.movies.insertOne({"title" : "Stand by Me"})
db.collection.insertMany() 用于向集合插入一个多个文档,如下:
db.movies.insertMany(
[
{"_id": 3, "title": "Sixteen Candles"},
{"_id": 4, "title": "The Terminator"}
],
{"ordered": false})
ordered:指定是否按顺序写入,默认 true,按顺序写入。
虽然 insert 等方法仍然支持向后兼容,但今后不应该在应用程序中继续使用。应该使用 insertOne 和insertMany 来创建文档。
删除文档
deleteOne 和deleteMany 两种方法。这两种方法都将筛选文档(filter document)作为第一个参数。
db.movies.deleteOne({"_id": 4})
db.movies.deleteMany({"year": 1984})
数据删除是永久性的。没有任何方法可以撤回删除文档或者删除集合的操作,也无法恢复被删除的文档,当然从以前的备份中恢复除外。
更新文档
updateOne、updateMany 和 replaceOne。
updateOne 和 updateMany都将筛选文档作为第一个参数,将变更文档作为第二个参数,后者对要进行的更改进行描述。
replaceOne 同样将筛选文档作为第一个参数,但第二个参数是一个用来替换所匹配的筛选文档的新文档。
更新文档是原子操作:如果两个更新同时发生,那么首先到达服务器的更新会先被执行,然后再执行下一个更新。
db.movies.replaceOne(
{"_id": 1}
, {"_id": 1, "title": "mongo111"}
);
更新运算符
"$set" 用来设置一个字段的值。如果这个字段不存在,则创建该字段。
db.movies.updateOne({"_id": 1},
{"$set": {"a1.a11": "a11"}})
可以用 "$unset" 将这个键完全删除
db.movies.updateOne({"_id": 1},
{"$unset": {"a1": ""}})
数组运算符
如果数组已存在,"$push" 就会将元素添加到数组末尾;如果数组不存在,则会创建一个新的数组。
db.movies.updateOne({"_id": 1},
{"$push": {"b1": "b1"}})
"$push" 使用 "$each" 修饰符,在一次操作中添加多个值:
db.movies.updateOne({"_id": 1},
{"$push": {"b1": {"$each": [562.776, 562.790, 559.123]}}})
可以使用 "$slice" 修饰符配合 $push 来防止数组的增长超过某个大小
db.movies.updateOne({"_id": 1},
{
"$push": {
"b1": {
"$each": ["111", "222"],
"$slice": -1
}
}
})
在截断之前可以将 "$sort" 修饰符应用于 "$push" 操作
db.movies.updateOne({"_id": 1},
{
"$push": {
"b2": {
"$each": [
{"name": "aaa", "rating": 6.6},
{"name": "bbb", "rating": 4.3}],
"$slice": -2,
"$sort": {"rating": 1}
}
}
})
参考: MongoDB权威指南(第3版)第 3 章 创建、更新和删除文档

浙公网安备 33010602011771号