これを行うには、「ドキュメント」に一致するものを指定してから、.update()
のクエリ式として必要な「shifts」配列エントリを指定します。 。次に、位置$
を適用します オペレーター
$pull
と一致する配列インデックスの場合
:
db.collection.update(
{ "_id": ObjectId("59180305c19dbaa4ecd9ee59"), "shifts.timeslot": "8:00 - NOON" },
{ "$pull": { "shifts.$.volunteers": { "fullname": "Mary Mack" } } }
)
ネストされた構造の「outer」配列と$pull
削除する配列エントリを識別するための独自のクエリ引数があります。
ただし、「ネストされた配列」の使用には本当に注意する必要があります。 $pull
このような操作は機能しますが、位置$
オペレーター
条件を満たす「最初の」要素にのみ一致します。したがって、複数のシフトでの「メアリーマック」の例は、最初に見つかった「シフト」配列エントリでのみ一致します。