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"}});

  • 相关阅读:
    Vasya and Endless Credits CodeForces
    Dreamoon and Strings CodeForces
    Online Meeting CodeForces
    数塔取数 基础dp
    1001 数组中和等于K的数对 1090 3个数和为0
    1091 线段的重叠
    51nod 最小周长
    走格子 51nod
    1289 大鱼吃小鱼
    POJ 1979 Red and Black
  • 原文地址:https://www.cnblogs.com/sthu/p/8360518.html
Copyright © 2011-2022 走看看