关于数组元素的插入,我们经常会遇到的有以下两种情况:
情况一:
"class":
{
"name":class1,
"number":1,
"student":
["zhangsan", "lisi", "wangwu"]
}
我们可以使用$addToSet来对要添加的元素进行添加
db.class.update({name="class1"}, {$addToSet:{student:"zhaoliu"}});
情况二:
"class":
{
"name": class1,
"number": 1,
"student":
[
{
"name": "zhangsan",
"age": 15
},
{
"name": "lisi",
"age": 16
},
{
"name":"wangwu",
"age": 15
}
]
}
同样
db.class.update({name: "class1"}, {$addToSet:{student:{name: "zhaoliu", age: 17}}});
还有另一种方式,就是用
p
u
s
h
替
换
push替换
push替换addToSet,也能达到添加元素的效果,那么,这两种方式有什么区别呢?
$addToSet:向数组中添加元素,若数组本身含有该元素,则不添加,否则,添加,这样就避免了数组中的元素重复现象;
$push:向数组尾部添加元素,但它不管数组中有没有该元素,都会添加。