MongoDB修改器总结

时间:2021-11-07 03:51:59

1"$set":用来制定一个字段值,若不存在,则创建;

   一般用于点加一个字段

  db.users.update({name:"joe"},{"$set":{"favorite book":"War and Peace"}})

  还可以修改一个字段

  db.users.update({name:"joe"},{"$set":{"favorite book":"Your"}})

 还可以删除

  db.users.update({name:"joe"},{"$unset":{"favorite book":"Your"}})

2"$inc":增加或者减少

                用来增加已有的键的值,不存在则创建一个,比如某网站的访问量

 db.users.update({name:"joe"},{"$inc":{"score":1}})

 每次访问都会增加1

3"$push":会向已有的数组末尾添加一个元素,要是没有,创建一个新的数组。

  比如要添加一个评论:
  db.users.update({name:"joe"},{"$push":{"comments":{"name":"joe","email":"joe@yahoo.com","conment":"nice"}}})

 还想添加,继续修改即可

db.users.update({name:"joe"},{"$push":{"comments":{"name":"bob","email":"bob@yahoo.com","conment":"good"}}})

4."$each"

      "$each"与"$push"结合,可以操作复杂的数组。可以一次添加多个值

var users={"username":"joe",
          "email":[
                       "joe@example.com",
                       "joe@exam.com",
                     "joe@yahoo.com"]}
 db.users.insert(users)
 db.users.find()
 db.users.update({"username":"joe"},
                          {"$addToSet":{"email":"joe@mail.com"}})
 db.users.update({"username":"joe"},
                           {"$addToSet":{
                                     "email":{
                                     "$each":["joe@qq.com","joe@Hadoop.com","joe@python.com"]}}})

结果展示:
   

{
"_id" : ObjectId("57600ffd73b4b5108cfff9b0"),
    "username" : "joe",
   "email" : [
   "joe@example.com",
   "joe@exam.com",
   "joe@yahoo.com",
   "joe@mail.com",
   "joe@qq.com",
    "joe@Hadoop.com",
  "joe@python.com"
   ]
}

5"$pop""$pull"删除元素的方法。类似于堆栈中的出栈操作
  

db.lists.insert({"todo":["dishes","laundry","dry cleaning"]})
db.lists.find()
db.lists.update({},{"$pull":{"todo":"laundry"}})

6基于位置的修改可以使用定位操作符"$"

  如: db.blog.plogs.update({"post","post_id"},

                                             {"$inc":"comments.0.votes":1})

   实际在数据库中,数组的下标很难确定,我们采用

  db.blog.update({"comments.author":"Jim"},

                             {"$set":{"comments.$.author":"Wade"}})