y45t4r3 发表于 2015-1-4 08:54:42

【MongoDB学习笔记12】深入MongoDB的更新(update)操作:数组修改

查看一个文档的一个键值comments为一个数组[“test1”,”test2”]:

1
2
3
4
5
6
7
8
9
10
11
12
> db.post.findOne({"id":1})   
{   
    "_id" : ObjectId("54a530c3ff0df3732bac1680"),   
    "id" : 1,   
    "name" : "joe",   
    "age" : 21,   
    "comments" : [   
      "test1",   
      "test2"   
    ]   
}   
>





一、$push向数组末尾添加元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> db.post.update({"id":1},{$push:{"comments": "test3"}})   
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })   
> db.post.findOne({"id":1})   
{   
    "_id" : ObjectId("54a530c3ff0df3732bac1680"),   
    "id" : 1,   
    "name" : "joe",   
    "age" : 21,   
    "comments" : [   
      "test1",   
      "test2",   
      "test3"   
    ]   
}   
>





使用$each一次性添加多个值:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
> db.post.update({"id":1},{$push:{"comments":{$each:["test4","test5","test6"]}}})   
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })   
> db.post.findOne({"id":1})   
{   
    "_id" : ObjectId("54a530c3ff0df3732bac1680"),   
    "id" : 1,   
    "name" : "joe",   
    "age" : 21,   
    "comments" : [   
      "test1",   
      "test2",   
      "test3",   
      "test4",   
      "test5",   
      "test6"   
    ]   
}   
>




二、用$pop删除数组中的元素
从数组末尾删除一个值:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
> db.post.update({"id":1},{$pop:{"comments":1}})   
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })   
> db.post.findOne({"id":1})   
{   
    "_id" : ObjectId("54a530c3ff0df3732bac1680"),   
    "id" : 1,   
    "name" : "joe",   
    "age" : 21,   
    "comments" : [   
      "test1",   
      "test2",   
      "test3",   
      "test4",   
      "test5"   
    ]   
}




从数组开头删除一个值:   


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
> db.post.update({"id":1},{$pop:{"comments":-1}})   
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })   
> db.post.findOne({"id":1})   
{   
    "_id" : ObjectId("54a530c3ff0df3732bac1680"),   
    "id" : 1,   
    "name" : "joe",   
    "age" : 21,   
    "comments" : [   
      "test2",   
      "test3",   
      "test4",   
      "test5"   
    ]   
}   
>




三、删除数组中一个指定的值:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> db.post.update({"id":1},{$pull:{"comments":"test3"}})   
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })   
> db.post.findOne({"id":1})   
{   
    "_id" : ObjectId("54a530c3ff0df3732bac1680"),   
    "id" : 1,   
    "name" : "joe",   
    "age" : 21,   
    "comments" : [   
      "test2",   
      "test4",   
      "test5"   
    ]   
}   
>




四、基于数组下标位置修改:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
> db.post.update({"id":1},{$set:{"comments.1":"test9"}})   
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })   
> db.post.findOne({"id":1})   
{   
    "_id" : ObjectId("54a530c3ff0df3732bac1680"),   
    "id" : 1,   
    "name" : "joe",   
    "age" : 21,   
    "comments" : [   
      "test2",   
      "test9",   
      "test5"   
    ]   
}   
>



页: [1]
查看完整版本: 【MongoDB学习笔记12】深入MongoDB的更新(update)操作:数组修改