3

Mongo DB 3.0 ドキュメントには次のドキュメント構造があります。

{
    id: "ID",
    name: "NAME",
    items:[
        {
            id:"100",
            name:"Item Name",
            fields:[
                {a:"field 1", b:44},
                {a:"field 2", b:56},
            ]
        }
    ]
}

結果が次のようになるように、「フィールド 2」を値 72 に更新する必要があります。

{
    id: "ID",
    name: "NAME",
    items:[
        {
            id:"100",
            name:"Item Name",
            fields:[
                {a:"field 1", b:44},
                {a:"field 2", b:72},
            ]
        }
    ]
}
4

1 に答える 1

6

残念ながら、MongoDB の非常に厄介な制限に遭遇しました。

$プレースホルダーを使用して、個々の配列エントリを更新できます。残念ながら、フィールド名にはこれらのうちの 1 つしか含めることができません。つまり、配列内の配列は単一のクエリでは更新できません。

考えられる回避策は、 を使用して配列find全体のコピーを要求し、items.$.fieldsそれをアプリケーション層で編集してから、配列全体を置き換える更新を行うことです。

この問題については、公式のバグトラッカーにオープン チケットがあり、優先度は「メジャー」です。しかし、チケットは 2010 年から存在しているので、息をのむことはありません。

于 2015-09-07T18:54:36.040 に答える