参考 > 参考 > 经营者 > 更新运算符 > 数组更新运算符 > $位置
在本页面
$position
的$position改性剂:规定了在阵列中的位置$push操作者将元件。如果没有$position修饰符,$push 运算符会将元素插入数组的末尾。有关更多信息,请参见$ push修饰符。
$push
要使用$position修饰符,它必须与$each修饰符一起出现 。
$each
{ $push: { <field>: { $each: [ <value1>, <value2>, ... ], $position: <num> } } }
在版本3.6中更改:$position可以接受一个负数组索引值来指示从末尾开始的位置,该位置从(但不包括)数组的最后一个元素开始计数。
<num> 根据从零开始的索引指示数组中的位置:
<num>
-1
考虑一个students包含以下文档的集合:
students
{ "_id" : 1, "scores" : [ 100 ] }
以下操作更新scores字段添加元素50,60并70以阵列的开头:
scores
50
60
70
db.students.update( { _id: 1 }, { $push: { scores: { $each: [ 50, 60, 70 ], $position: 0 } } } )
该操作生成以下更新的文档:
{ "_id" : 1, "scores" : [ 50, 60, 70, 100 ] }
以下操作将更新scores字段以添加元素20并30位于的数组索引处2:
20
30
2
db.students.update( { _id: 1 }, { $push: { scores: { $each: [ 20, 30 ], $position: 2 } } } )
{ "_id" : 1, "scores" : [ 50, 60, 20, 30, 70, 100 ] }
在版本3.6中更改:$position可以接受一个负数组索引值来指示从末尾开始的位置,该位置从(但不包括)数组的最后一个元素开始计数。例如,-1 指示数组中最后一个元素之前的位置。
下面的操作指定-2为$position补充90的位置处两块地的最后一个元素之前,然后 80两块地的最后一个元素之前的位置。
-2
90
80
重要
对于负索引位置,如果您在$each数组中指定多个元素,则最后添加的元素位于末尾的指定位置。
db.students.update( { _id: 1 }, { $push: { scores: { $each: [ 90, 80 ], $position: -2 } } } )
{ "_id" : 1, "scores" : [ 50, 60, 20, 30, 90, 80, 70, 100 ] }