sql >> データベース >  >> NoSQL >> MongoDB

MongoDBの配列の特定の位置に値を挿入します

    MongoDBでは、$pushを使用できます 配列に値を追加する演算子。

    この演算子は、さまざまな修飾子とともに使用できます。その1つが$positionです。 修飾子。 $position モディファイアを使用すると、新しい値を挿入する配列内の位置を指定できます。

    配列の先頭に値を追加する

    次のコレクションがあるとします。

    { "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL" ] }
    { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
    { "_id" : 3, "prod" : "Cap", "sizes" : [ "M", "L" ] }

    そして、ドキュメント3の配列の先頭に値を追加したいとします。

    これを行うことができます:

    db.products.update(
       { _id: 3 },
       { 
         $push: { 
            sizes: {
               $each: [ "S" ],
               $position: 0
            }
          } 
        }
    )

    それでは、コレクションをもう一度確認しましょう:

    db.products.find()

    結果:

    { "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL" ] }
    { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "L", "XL" ] }
    { "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }

    配列はゼロベースであるため、position: 0 配列の最初の要素として値を追加します。

    配列の中央に値を追加する

    Mを追加するとします。 ドキュメント2に、Sの間に配置する必要があります およびL

    その方法は次のとおりです。

    db.products.update(
       { _id: 2 },
       { 
         $push: { 
            sizes: {
               $each: [ "M" ],
               $position: 1
            }
          } 
        }
    )

    それでは、コレクションをもう一度確認しましょう:

    db.products.find()

    結果:

    { "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "XL" ] }
    { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L", "XL" ] }
    { "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }

    $position: 1を使用しました 、それが私たちが望んでいた位置だからですM 移動します(つまり、2番目の位置)。

    負の値

    位置として負の値を指定することもできます。これを行うと、値は最後から数えて指定された負の位置に挿入されます。

    Lを挿入するとします。 Mの間 およびXL ドキュメント1。

    ネガティブポジションを使用してこれを行う方法は次のとおりです。

    db.products.update(
       { _id: 1 },
       { 
         $push: { 
            sizes: {
               $each: [ "L" ],
               $position: -1
            }
          } 
        }
    )

    結果を確認します:

    db.products.find()

    結果:

    { "_id" : 1, "prod" : "Bat", "sizes" : [ "S", "M", "L", "XL" ] }
    { "_id" : 2, "prod" : "Hat", "sizes" : [ "S", "M", "L", "XL" ] }
    { "_id" : 3, "prod" : "Cap", "sizes" : [ "S", "M", "L" ] }

    負のインデックス位置で、$eachに複数の要素を指定した場合 配列の場合、最後に追加された要素は最後から指定された位置にあります。


    1. MySQL、MongoDB、PostgreSQLのバックアップ暗号化機能-ClusterControl 1.5.1

    2. MongoDBコレクションドキュメントを自動的にエージングアウトします

    3. Redisで最大のオブジェクトを見つける最も簡単な方法は何ですか?

    4. MongoDB diacriticInSensitive検索では、すべてのアクセント付き(発音区別符号付きの単語)行が期待どおりに表示されない、またはその逆