Mongodb更新数组$push操作符

本文详细介绍了MongoDB中$push操作符的功能及其用法,包括如何使用$each、$sort、$slice等修饰符来添加多个值,并对数组进行排序及限制长度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、$push操作符添加指定的值到数组中,$push操作符有如下的格式:

{ $push: { <field1>: <value1>, ... } }

指定一个 <field>在一个内嵌文档中或者在一个数组中,使用点号分开

$push修饰符可以和$each、$slice、$sort、$position修饰符一起使用,当使用这些修饰符的时候$push操作符有如下格式:

{ $push: { <field1>: { <modifier1>: <value1>, ... }, ... } }

二、例如:添加一个值到数组中

如下语句添加89到scores字段中

db.students.update(
   { _id: 1 },
   { $push: { scores: 89 } }
)

添加多个值到数组中


使用$push操作符和$each修饰符一起添加多个值到数组字段中。

如下例子添加数组[ 90, 92, 85 ]中的每个元素到数组scores字段中,对于字段name等于joe的文档:

db.students.update(
   { name: "joe" },
   { $push: { scores: { $each: [ 90, 92, 85 ] } } }
)

$push操作符和多个操作符一起使用

集合students有如下文档:

{
   "_id" : 5,
   "quizzes" : [
      { "wk": 1, "score" : 10 },
      { "wk": 2, "score" : 8 },
      { "wk": 3, "score" : 5 },
      { "wk": 4, "score" : 6 }
   ]
}


如下$push操作符使用:

$each修饰符添加多个值到quizzes数组中;

$sort修饰符将数组quizzes中的元素按照score元素降序排列;

$slice修饰符只留下数组quizzes中前三个排序元素;

db.students.update(
   { _id: 5 },
   {
     $push: {
       quizzes: {
          $each: [ { wk: 5, score: 8 }, { wk: 6, score: 7 }, { wk: 7, score: 6 } ],
          $sort: { score: -1 },
          $slice: 3
       }
     }
   }
)


操作的结果是只留下quizzes数组中分数最高的三个:

{
  "_id" : 5,
  "quizzes" : [
     { "wk" : 1, "score" : 10 },
     { "wk" : 2, "score" : 8 },
     { "wk" : 5, "score" : 8 }
  ]
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值