2

mongodb のマニュアルには、単一のドキュメントに対するアトミック操作の例があります。

book = {
          _id: 123456789,
          title: "MongoDB: The Definitive Guide",
          available: 3,
          checkout: [ { by: "joe", date: ISODate("2012-10-15") } ]
        }

マニュアルには、以下の操作はアトミックであると記載されています。

db.books.findAndModify ( {
   query: {
            _id: 123456789,

            available: { $gt: 0 }
          },
   update: {
             $inc: { available: -1 },
             $push: { checkout: { by: "abc", date: new Date() } }
           }
} )

私の質問は、利用可能なフィールドが埋め込みドキュメントだった場合にどうなるかです。以下のように:

book = {
          _id: 123456789,
          title: "MongoDB: The Definitive Guide",
          available: [ { value: 3, valueFloat: 3.00 ] },
          checkout: [ { by: "joe", date: ISODate("2012-10-15") } ]
        }

この操作をアトミックに実行できますか? もしそうなら、どのように?

4

1 に答える 1