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") } ]
}
この操作をアトミックに実行できますか? もしそうなら、どのように?