|
这一篇看一下array的update oprater:
1. $
在不知道elem的具体位置时使用
假设有如下文档
{ "_id" : 1, "grades" : [ 80, 85, 90 ] }
{ "_id" : 2, "grades" : [ 88, 90, 92 ] }
{ "_id" : 3, "grades" : [ 85, 100, 90 ] }
那么:
db.students.update( { _id: 1, grades: 80 }, { $set: { "grades.$" : 82 } } )
假设嵌套结构
{ "_id" : 4, "grades" : [ { grade: 80, mean: 75, std: 8 },
{ grade: 85, mean: 90, std: 5 },
{ grade: 90, mean: 85, std: 3 } ] }
那么
db.students.update( { _id: 4, "grades.grade": 85 }, { $set: { "grades.$.std" : 6 } } )
2. $addtoset
名字里有set那就是如果没有才加进去
假设有doc
{ _id: 1, item: "filter", tags: [ "electronics", "camera" ] }
那么
db.inventory.update(
{ _id: 1 },
{ $addToSet: { tags: "accessories" } }
)
也可以配合$each一次添加多个:
db.inventory.update(
{ _id: 2 },
{ $addToSet: { tags: { $each: [ "camera",
"electronics",
"accessories" ] } } }
)
3. $pop
pop删除第一个或者最后一个.奇怪的是-1是第一个,1是最后一个.
假设{ _id: 1, scores: [ 8, 9, 10 ] }
执行db.students.update( { _id: 1 }, { $pop: { scores: -1 } } )之后, 8被删除.
4:$pullall
版权声明:本文为博主原创文章,未经博主允许不得转载。 |
|
|