美文网首页
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