查看一个文档的一个键值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" ]
} > |
本文转自 bannerpei 51CTO博客,原文链接:http://blog.51cto.com/281816327/1598705,如需转载请自行联系原作者