Mongomaticでアトミックな「$set」演算子を使用してMongoDBドキュメントを更新する方法を理解するのに非常に苦労しています。私が問題を抱えているのはMongoの基準/更新言語であり、Mongomaticではないと確信していますが、間違っていることが証明されることを望んでいます。
スタンドアロンの実行可能なスクリプトを使用した要点へのリンクは次のとおりです:https ://gist.github.com/3835672
私は次のようなドキュメントを作成することから始めています。
{"videos":[{"video_id":"video1"},{"video_id":"video2"}],"_id":{"$oid": "506ddd53a114604ce3000001"}}
Mongomaticを使用してインスタンス化されたモデルを使用して、そのドキュメントを取得できます。
video_group = VideoGroup.find_one('videos.video_id' => 'video1')
次に、次のようにして、「ビュー」フィールドを設定しようとしています。
video_group.update!({ 'videos.video_id' => 'video1' }, '$set' => { 'videos.$.views' => 123 })
ここでMongoが爆発し、次のエラーが発生します。
can't append to array using string field name [$]
私はこれがStackOverflowで非常に一般的な質問であることを知っています。問題は、位置演算子が一致しないことだと一般的に理解しています。しかし、何十もの回答を読んでも、このステートメントを適切に表現する方法を理解することはできません。
間違ったデータ構造から始めたばかりですか?