В руководстве по 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") } ]
}
Могу ли я по-прежнему выполнять эту операцию атомарно? Если да, то как?