mongodbドキュメントの配列に含まれる単一のサブ要素を更新しようとしています。配列インデックスを使用してフィールドを参照したい(配列内の要素には、一意の識別子になることを保証できるフィールドがありません)。このように簡単にできるはずですが、構文がわかりません。
これが私がpseudo-jsonでやりたいことです。
前:
{
_id : ...,
other_stuff ... ,
my_array : [
{ ... old content A ... },
{ ... old content B ... },
{ ... old content C ... }
]
}
後:
{
_id : ...,
other_stuff ... ,
my_array : [
{ ... old content A ... },
{ ... NEW content B ... },
{ ... old content C ... }
]
}
クエリは次のようになります。
//pseudocode
db.my_collection.update(
{_id: ObjectId(document_id), my_array.1 : 1 },
{my_array.$.content: NEW content B }
)
しかし、これは機能しません。私はmongodbドキュメントを検索し、この構文のさまざまなバリエーションを試してみるのに非常に長い時間を費やしました(たとえば、を使用$slice
するなど)。MongoDBでこの種の更新を実行する方法の明確な説明が見つかりません。