您的位置:首页 > 数据库 > Mongodb

Mongodb更新数组$push操作符

2017-12-02 20:00 148 查看
一、$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 }
]
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: