美文网首页
NoSQL数据模型设计 - 特殊应用建模 - 原子操作

NoSQL数据模型设计 - 特殊应用建模 - 原子操作

作者: 李桐2000 | 来源:发表于2020-10-01 23:24 被阅读0次

本文为NoSQL数据模型设计系列的一部分。

mongodb保证对于一个文档的写操作原子性。单个文档的所有字段以及嵌入字段都会被同时修改。所以,对于需要同时修改的字段可以放在一个文档中,确保它们的操作原子性。

例如,我们需要同时维护书籍的可用数量以及最新借出信息,把它们放到一个文档中以确保它们永远保持一致。例如

{
    _id: 123456789,
    title: "MongoDB: The Definitive Guide",
    author: [ "Kristina Chodorow", "Mike Dirolf" ],
    published_date: ISODate("2010-09-24"),
    pages: 216,
    language: "English",
    publisher_id: "oreilly",
    available: 3,
    checkout: [ { by: "joe", date: ISODate("2012-10-15") } ]
}

当有新借出发生时,使用db.collection.updateOne()方法同时更新available和checkout字段。例如

db.books.updateOne (
   { _id: 123456789, available: { $gt: 0 } },
   {
     $inc: { available: -1 },
     $push: { checkout: { by: "abc", date: new Date() } }
   }
)

返回的结果文档包含操作状态信息。例如

{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

完整内容请查看NoSQL数据模型设计系列

相关文章

网友评论

      本文标题:NoSQL数据模型设计 - 特殊应用建模 - 原子操作

      本文链接:https://www.haomeiwen.com/subject/ezlcuktx.html