1. 程式人生 > >Mongodb更新陣列$position修飾符

Mongodb更新陣列$position修飾符

一、$position修飾符指定使用$push操作符插入陣列中的資料元素的位置,並且必須和$each一起使用;使用位置修飾符的格式如下:

{
  $push: {
    <field>: {
       $each: [ <value1>, <value2>, ... ],
       $position: <num>
    }
  }
}

如果num是負數或者0插入的資料就放到陣列的開始位置,如果num大於或者等於陣列的 長度則不對陣列做任何 修改直接放入到陣列的 最後位置。

二、將元素插入到陣列開始的位置

以下是students集合包含下面的文件:

{ "_id" : 1, "scores" : [ 100 ] }

以下操作會將元素放到陣列的開始位置:
db.students.update(
   { _id: 1 },
   {
     $push: {
        scores: {
           $each: [ 50, 60, 70 ],
           $position: 0
        }
     }
   }
)

操作的結果是:
{ "_id" : 1, "scores" : [  50,  60,  70,  100 ] }

三、將元素插入到陣列的中間位置

考慮students集合包含如下文件集合:

{ "_id" : 1, "scores" : [  50,  60,  70,  100 ] }

以下操作會更新scores欄位並將20、30元素放入索引為2的位置
db.students.update(
   { _id: 1 },
   {
     $push: {
        scores: {
           $each: [ 20, 30 ],
           $position: 2
        }
     }
   }
)

操作結果是:
{ "_id" : 1, "scores" : [  50,  60,  20,  30,  70,  100 ] }