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 ] }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值