私のドキュメントには次の構造があります。
{
_id : ObjectId("43jh4j343j4j"),
array : [
{
_arrayId : ObjectId("dsd87dsa9d87s9d7"),
someField : "something",
someField2 : "something2"
},
{
_arrayId : ObjectId("sds9a0d9da0d9sa0"),
someField : "somethingElse",
someField2 : "somethingElse2"
}
]
}
someFieldとsomeField2を更新したいのですが、配列内のアイテムの1つ、_ arrayIdに一致するアイテム(例:_arrayId : ObjectId("dsd87dsa9d87s9d7")
;、このドキュメントのみ(例_id : ObjectId("43jh4j343j4j")
))のみを更新します。
arrayIdsはドキュメントに固有ではないため、特定のドキュメント用にする必要があります。$ positional operator
配列内のすべてのドキュメントの値を更新したい場合はifを使用できますが、それは私が望んでいることではありません。
私はこれをJavaで達成しようとしていますが、コマンドラインソリューションでも機能します。