MongoDB学习笔记(数据操作)(二)

2014-11-24 11:00:28 · 作者: · 浏览: 3
"hello"
}
],
"title" : "one blog"
}
--如果$push操作的键值已经存在,且其值为数组类型,该修改符将为该数组添加新的数组元素。
> db.blog.update({"title":"one blog"}, {"$push": {"comments":{"content":"word"}}
> db.blog.findOne()
{
"_id" : ObjectId("4fcd909520668578cc1097dc"),
"comments" : [
{
"content" : "hello"
},
{
"content" : "word"
}
],
"title" : "one blog"
}
> post = {"username":"joe", "emails":["joe@example.com","joe@gmail.com","joe@yahoo.com"]}
{
"username" : "joe",
"emails" : [
"joe@example.com",
"joe@gmail.com",
"joe@yahoo.com"
]
}
> db.blog.insert(post)
> db.blog.findOne()
{
"_id" : ObjectId("4fd2e468b2ac404941134bed"),
"username" : "joe",
"emails" : [
"joe@example.com",
"joe@gmail.com",
"joe@yahoo.com"
]
} www.2cto.com
--$addToSet适用于数组,如果数组中该元素已经存在,该命令就不做任何操作后返回,否则将新元素插入数组。
> db.blog.update({"username":"joe"}, {"$addToSet": {"emails":"joe@gmail.com"}})
> db.blog.findOne()
{
"_id" : ObjectId("4fd2e468b2ac404941134bed"),
"username" : "joe",
"emails" : [
"joe@example.com",
"joe@gmail.com",
"joe@yahoo.com"
]
}
> db.blog.update({"username":"joe"}, {"$addToSet": {"emails":"joe@hotmail.com"}
> db.blog.findOne()
{
"_id" : ObjectId("4fd2e468b2ac404941134bed"),
"emails" : [
"joe@example.com",
"joe@gmail.com",
"joe@yahoo.com",
"joe@hotmail.com"
],
"username" : "joe"
}
--$addToSet和$each的组合可以将数组插入到另外一个数组中。
> db.blog.update({"username":"joe"},{"$addToSet": {"emails":{"$each":["joe@php.net","joe@example.com"]}}})
> db.blog.findOne()
{
"_id" : ObjectId("4fd2e468b2ac404941134bed"),
"emails" : [
"joe@example.com",
"joe@gmail.com",
"joe@yahoo.com",
"joe@hotmail.com",
"joe@php.net"
],
"username" : "joe"
}
--$pop从数组中删除一个元素,如参数为1,表示从数组的尾部删除一个元素,如果是-1,则从头部删除。 www.2cto.com
> db.blog.update({"username":"joe"}, {"$pop":{"emails":1}})
> db.blog.findOne()
{
"_id" : ObjectId("4fd2e468b2ac404941134bed"),
"emails" : [
"joe@example.com",
"joe@gmail.com",
"joe@yahoo.com",
"joe@hotmail.com"
],
"username" : "joe"
}
> db.blog.update({"username":"joe"}, {"$pop":{"emails":-1}})
> db.blog.findOne()
{
"_id" : ObjectId("4fd2e468b2ac404941134bed"),
"emails" : [
"joe@gmail.com",
"joe@yahoo.com",
"joe@hotmail.com"
],
"username" : "joe"
}
--$pull修改符则是从数据中删除指定的元素
> db.blog.update({"username":"joe"}, {"$pull":{"emails":"joe@yahoo.com"}})
> db.blog.findOne()
{
"_id" : ObjectId("4fd2e468b2ac404941134bed"),
"emails" : [
"joe@gmail.com",