数组修改器
数组修改器有好几种,我们分别来看。
$push可以向已有数组末尾追加元素,要是不存在就创建一个数组,还是以我们的上面的book为例,假设book有一个字段为comments,是一个数组,表示对这个book的评论,我们可以使用如下命令添加一条评论:
db.sang_collect.update({name:"三国演义"},{$push:{comments:"好书666"}})
此时不存在comments字段,系统会自动帮我们创建该字段,结果如下:
{
"_id" : ObjectId("59f042cfcafd355da9486008"),
"name" : "三国演义",
"author" : {
"name" : "明代罗贯中",
"gender" : "男",
"age" : 100.0
},
"comments" : [
"好书666"
]
}
此时我们可以追加评论,如下:
db.sang_collect.update({name:"三国演义"},{$push:{comments:"好书666啦啦啦啦"}})
结果如下:
{
"_id" : ObjectId("59f042cfcafd355da9486008"),
"name" : "三国演义",
"author" : {
"name" : "明代罗贯中",
"gender" : "男",
"age" : 100.0
},
"comments" : [
"好书666",
"好书666啦啦啦啦"
]
}
如果想一次添加3条评论,可以结合$each一起来使用,如下:
db.sang_collect.update({name:"三国演义"},{$push:{comments:{$each:["111","222","333"]}}})
结果如下:
{
"_id" : ObjectId("59f042cfcafd355da9486008"),
"name" : "三国演义",
"author" : {
"name" : "明代罗贯中",
"gender" : "男",
"age" : 100.0
},
"comments" : [
"好书666",
"好书666啦啦啦啦",
"111",
"222",
"333"
]
}