mongo db backup 2

来源:互联网 发布:淘宝网店数据分析 编辑:程序博客网 时间:2024/05/01 08:21

这一篇看一下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




0 0