1. 更新操作:
1.1 $set 操作符:
用于设置文档中指定字段的值,如果字段不存在,则创建该字段。
db.collection.update(
{ _id: 1 },
{ $set: { field: "new value" } }
)
1.2 $inc 操作符:
用于增加(或减少)文档中指定字段的值。
db.collection.update(
{ _id: 1 },
{ $inc: { field: 1 } }
)
1.3 $push 操作符:
用于向数组字段添加元素。
db.collection.update(
{ _id: 1 },
{ $push: { arrayField: "new element" } }
)
2. 查找和修改:
2.1 findAndModify 命令:
findAndModify 命令可以在单个原子操作中查找并修改文档。你可以使用该命令进行更新、删除、插入等操作。
db.collection.findAndModify({
query: { _id: 1 },
update: { $set: { field: "new value" } },
new: true // 返回修改后的文档
})
3. 原子的写入操作:
3.1 $addToSet 操作符:
用于向数组字段添加元素,但只有当元素在数组中不存在时才添加。
db.collection.update(
{ _id: 1 },
{ $addToSet: { arrayField: "new element" } }
)
3.2 $pop 操作符:
用于从数组字段中移除一个元素。
db.collection.update(
{ _id: 1 },
{ $pop: { arrayField: 1 } } // 从数组末尾移除一个元素
)
4. 多文档事务:
MongoDB 支持多文档事务,这意味着你可以将多个操作放在一个事务中,并在事务中确保它们要么全部成功,要么全部失败。
session = db.getMongo().startSession()
session.startTransaction()
try {
db.collection1.update({ _id: 1 }, { $inc: { field: 1 } })
db.collection2.insert({ _id: 2, field: "value" })
session.commitTransaction()
} catch (error) {
print("Transaction aborted:", error)
session.abortTransaction()
}
这是一个简单的事务示例,通过使用事务,你可以确保在一个操作失败时回滚所有修改。
上述是一些 MongoDB 中的常见原子操作,它们可用于确保数据库操作的原子性,从而提供一致性和可靠性。在设计和执行数据库操作时,了解这些原子操作是非常重要的。
转载请注明出处:http://www.zyzy.cn/article/detail/14242/MongoDB