MongoDB v2.2.3の時点で、特定の基準に一致する、より大きな配列に含まれる配列にある特定のフィールドを更新する必要があるという問題があります。
次のmongodbサンプルドキュメントがあります。
{
_id: ObjectId("50be30b64983e5100a000009"),
user_id: 0
occupied: {
Greece: [
{
user_id: 3,
deadline: ISODate("2013-02-08T19:19:28Z"),
fulfilled: false
},
{
user_id: 4,
deadline: ISODate("2013-02-16T19:19:28Z"),
fulfilled: false
}
],
Italy: [
{
user_id: 2,
deadline: ISODate("2013-02-15T19:19:28Z"),
fulfilled: false
}
]
}
}
アレイ内の国ごとにoccupied
、独自のアレイのセットがあります。
私がやろうとしているのは、user_id
0であるドキュメントを見つけ、配列を検索して、個々の「満たされた」フィールドをoccupied.Greece
持つ要素のみを検索し、trueに変更することです。"deadline": {$gt: ISODate(current-date)}
$
and演算子を試しました$elemMatch
が、クエリ内の最初の配列要素の1つにしか一致しませんが、指定された条件ですべての適格な要素に一致し、同じクエリを複数回実行したり配列を処理したりせずに更新する必要がありますクライアント側。
単一のドキュメントで一般的な更新を行うためのサーバー側のソリューションはありませんか?私はPHPを使用して開発していますが、これに対する解決策は普遍的であるはずです。