4

次のようなドキュメントが mongo DB にあるとします。

{
    pages: [
        {
            elements: [
                {id:1},
                {id:2},
                {id:3}
            ]
        },
        {
            elements: [
                ...
            ]
        }
    ]
}

また、ページ内の要素の順序にはセマンティックな意味があります (例: スタッキング)。ここで、最初のページの 2 番目の要素の前に新しい要素を追加したいとします。結果のドキュメントの望ましい状態は次のとおりです。

{
    pages: [
        {
            elements: [
                {id:1},
                {id:4}, // <------ element inserted here
                {id:2},
                {id:3}
            ]
        },
        {
            elements: [
                ...
            ]
        }
    ]
}

Mongo docsでは、要素を配列の末尾に追加する方法と既存の要素の値を更新する方法を確認できますが、配列の中央に挿入する方法は確認できません (PHP のarray_spliceに似ています)。これは、目的の要素が途中に挿入された新しい配列に配列全体を再割り当てすることによってのみ可能ですか?

4

3 に答える 3

3

MongoDB はこの機能をサポートするようになりました。$position演算子を使用して、配列の途中に要素を挿入できます。

幸運を

于 2014-10-09T15:43:57.957 に答える
0

レイヤー番号を配列要素の属性として格納するだけではいけませんか? BSON 仕様では、配列はキーと値のペアであるため、レイヤー番号を配列のキーとして使用する必要があります (MongoDB は BSON を使用してデータを格納します)。

于 2013-02-07T18:21:02.600 に答える