次のスキーマを想定しましょう。
{
'_id' : 'star_wars',
'count' : 1234,
'spellings' : [
{ spelling: 'Star wars', total: 10},
{ spelling: 'Star Wars', total : 15},
{ spelling: 'sTaR WaRs', total : 5} ]
}
これを行うことで、カウントとスペルの 1 つを更新できます。
db.movies.update(
{_id: "star_wars",
'spellings.spelling' : "Star Wars" },
{ $inc :
{ 'spellings.$.total' : 1,
'count' : 1 }}
)
しかし、この形式の更新は upsert では機能しません。つまり、存在しない _id やまだ存在しないスペルで (更新挿入で) 更新しようとしても、何も起こりません。
サブドキュメントを更新 ($inc) するときに upsert できるソリューションはありますか?
ありがとう!