mongoDB数组操作器
$push会向数组末尾加入一个元素,如果数组不存在,则会创建这个数组。
增加评论comments:
db.blog.posts.update({"title":"a blog post"}
,{
$push:
{"comments":{"name":"joe","email":"joe@example.com"}}
}
)
最终的结果是:
{
"_id":ObjectId("8df8df78d7f7d8df7"),
"title":"a blog post"
"comments":[{
"name":"joe",
"email":"joe@example.com"
}]
}
$ne如果一个值不在数组里面,就加进去:
db.papers.update({"authors cited":{"$ne":"richie"}},
{$push:{"authors cited":"richie"}})
也可以用$addToSet完成同样的功能:
db.papers.update({"_id":ObjectId("sdf9sd7f67df89d")},
{"$addToSet":{"authors cited":"richie"}})
$addToSet和$each组合起来,可以添加多个不同的值:
db.papers.update({"_id":ObjectId("sdf9sd7f67df89d")},
{"$addToSet":{"authors cited":{"$each":["richie","dff","dsf"]}}})
$pop删除数组中的元素:
删除末尾的元素:{$pop:{key:1}}
删除头部的元素:{$pop:{key:-1}}
$pull基于特定条件删除元素:
db.lists.insert({"todo":["dishes","laundry","dry cleaning"]})
db.lists.update({},{"$pull":{"todo":"laundry"}})
修改数组元素的数量:
{
"_id":ObjectId("df89d8fd7d"),
"content":"...",
"comments":[
{
"comment":"good post",
"author":"joy",
"votes":0
},
{
"comment":"good post",
"author":"joyn",
"votes":0
},
{
"comment":"good post",
"author":"andy",
"votes":0
}
]
}
如果想增加第一个评论的投票数量:
db.blog.update("post":post_id},{"$inc":{"comments.0.votes"}:1})
修改用户名:($用于定位已匹配的的元素,如果多个,就匹配第一个)
db.blog.update({comments.author:"andy"}:{"$set":{"comments.$.author":"jim"}})