MongoDB CRUD的概念
一、原子性和事务 1.原子性 在MongoDB中,写操作是单个文档级别上的原子操作,即使该操作修改了单个文档中的多个嵌入文档。 2.多文档事务 当单个写操作(例如db.collection.updateMany())修改多个文档时,对每个文档的修改是原子性的,但整个操作不是原子性的。 在执行多文档写操作时,无论是通过单个写操作还是多个写操作,其他操作可能会交错进行。 对于需要对多个文档进行原子性读写的情况(在单个或多个集合中),MongoDB支持多文档事务: 在4.0版本中,MongoDB支持副本集上的多文档事务。 在版本4.2中,MongoDB引入了分布式事务,它在sharded集群上添加了对多文档事务的支持,并合并了对副本集上多文档事务的现有支持。 有关MongoDB事务的详细信息,请参阅事务页面。 重要: 在大多数情况下,与单个文档写入相比,多文档事务会带来更大的性能成本,而且多文档事务的可用性不应该代替有效的模式设计。对于许多场景,非规范化数据模型(嵌入文档和数组)对于您的数据和用例仍然是最优的。也就是说,对于许多场景,适当地对数据建模将最小化对多文档事务的需求。 有关其他事务使用注意事项(如运行时限制和oplog大小限制),请参见生产注意事项。 3. 并发控制 并发控制允许多个应用程序并发运行,而不会导致数据不一致或冲突。 一种方法是在只能具有唯一值的字段上创建惟一的索引