1

次のスキーマを想定しましょう。

{
  '_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 できるソリューションはありますか?

ありがとう!

4

1 に答える 1