zoukankan      html  css  js  c++  java
  • MongoDB 数组操作

    $push:向文档数组中添加元素,如果没有该数组,则自动添加数组。

    db.users.insert({"name":"zhang"})
    db.users.update({"name":"zhang"},{"$push":{"emails":"zhang@pocketdigi.com"}})
    db.users.update({"name":"zhang"},{"$push":{"emails":"zhang@fwvga.com"}})

    以上代码,先创建name为zhang的用户,再给该用户加入邮箱,放到emails数组中.
    $addToSet:功能与$push相同,区别在于,$addToSet把数组看作成一个Set,如果数组中存在相同的元素,不会插入。

    db.users.update({"name":"zhang"},{"$addToSet":{"emails":"zhang@fwvga.com"}})
    db.users.find()

    {
    "_id" : ObjectId("5a7183066b593101d819b479"),
    "name" : "zhang",
    "emails" : [
    "zhang@pocketdigi.com",
    "zhang@fwvga.com"
    ]
    }

    可以看到,并没有两个zhang@fwvga.com的邮箱.

    $addToSet还可以与$each组合使用,一次添加多个值。

    db.users.update({"name":"zhang"},{"$addToSet":{"emails":{"$each":["zhang@fwvga.com","zhang@163.com","zhang@qq.com"]}}})

    $pop,与$push相对应,删除数组里的元素

    db.users.update({"name":"zhang"},{"$pop":{"emails":{'key':1}}});

    key=1,从尾删除,key=-1,从头删除

    $pull 删除指定元素,结合上面的例子,就是删除指定的邮箱

    db.users.update({"name":"zhang"},{"$pull":{"emails":"zhang@163.com"}});

    修改指定位置的元素:
    数组每个元素都有索引,从0开始。经过上面的一系列操作,zhang的文档应该是这样的:

    {
    "_id" : ObjectId("5a7183066b593101d819b479"),
    "name" : "zhang",
    "emails" : [
    "zhang@pocketdigi.com",
    "zhang@fwvga.com"
    ]
    }

    假如要把第一个邮箱修改成zhang@163.com:

    db.users.update({"name":"zhang"},{"$set":{"emails.0":"zhang@163.com"}});

    假如要把zhang@fwvga.com替换成zhang@qq.com,在并不知道zhang@fwvga.com索引时:

    db.users.update({"name":"zhang","emails":"zhang@fwvga.com"},{"$set":{"emails.$":"zhang@qq.com"}});

  • 相关阅读:
    php utf-8
    thinkPHP--关于域名指向的问题
    PHP命名空间(Namespace)的使用详解
    thinkphp 动态配置
    枚举之称硬币
    5.7
    5.6
    5.5(OI一本通开始)
    5.4
    5.3
  • 原文地址:https://www.cnblogs.com/sthu/p/8360518.html
Copyright © 2011-2022 走看看