查看一个文档的一个键值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,如需转载请自行联系原作者