zoukankan      html  css  js  c++  java
  • learn MongoDB (二) 常用修改器

    $inc

    $inc修改器用于增加字段的数值,如果没有该字段,则创建该字段并设置为$inc对应的值。示例如下:

    //before $inc  
    //example one: {name:"王二", age: 3}
    //example two: {name:"王二"}
    db.users.update({name:'王二'}, {'$inc':{'age':1})
    //example one: {name:"王二", age: 4}
    //example two: {name:"王二", age: 1}
    

    $set

    $set用于指定一个字段的值,如果该字段不存在,则创建它。

    db.users.update({name:"王二"}, {$set:{age:23}})
    
    修改内嵌文档

    可以通过点连接符修改深层嵌套的属性

    db.users.insert({'name':"王二", auth:{nickname:'哈哈'}})
    db.users.update({'name':'王二'}, {$set:{"auth.nickname": "嘻嘻"}})
    

    $unset

    用于删除一个字段。

    db.users.update({name:'王二', {$unset:{"age": 1}}})
    

    数组修改器

    $push

    $push修改器用于在已有的数组末尾添加一个元素,如果没有就创建一个新的数组。

    添加一条数据到数组中
    db.blog.posts.update({name:"yudong"}, {"$push":{"comments":{"name":"huasheng", "content":"nice article"}}})
    //作用是将{"name":"huasheng", "content":"nice article"} push到commnets数组中
    
    添加多条数据到数组中

    需要用到 $each 子操作符来添加多条数据

    db.stock.ticker.update({"name":"华生"}, {"$push": {"hourly":{"$each": [123,323, 320.3]}}})
    
    添加多条数据到数组中并限制数组的总长度

    需要用到 eachslice 操作符

    db.stock.ticker.update({"name":"华生"}, {"$push": {"hourly":{"$each": [123,323, 320.3],"$slice": -10}}})
    //数组最多包含最后添加的10个元素 $slice的值必须是负数
    

    $addToSet

    可以通过$addToSet将数组作为数据集合使用,保证数组内的元素不会重复。

    添加单条数据
    db.users.update({name:'wangshang'}, {"$addToSet":{emails:"wwwwqqqqqq@163.com"}})
    
    添加多条数据
    db.users.update({name:"wangshang", {"$addToSet":{"emails":{"$each":["www@163.com","huashan@qq.com"]}}})
    

    $pop

    $pop修改器将数据看成队列或者栈,可以从数组任何一端删除元素

    // 从数组key的末尾删除元素
    db.list.update({name:"wangao"}, {"$pop":{"key":1}})
    // 从数组key的头部删除元素
    db.list.update({name:"wangao"}, {"$pop":{"key":-1}})
    

    $pull

    基于特定条件来删除数据集合中的元素,会删除所有匹配到的元素

    db.list.insert({"todo": ["dishes","laundry", {"id": 1}]})
    db.list.update({}, {"$pull": {"todo": "laundry"}})
    //根据深层嵌套内容删除元素
    db.list.update({}, {"$pull": {"todo": {"id": 1}}})
    
  • 相关阅读:
    MySQL LIMIT OFFSET
    Sublime Text 3安装清爽主题(著名的Soda Theme)
    MySQL无法远程连接解决方案
    算法题:李嘉诚保险柜密码问题
    一些不错的算法学习练习站点
    [转]MySQL远程连接ERROR 2003 (HY000):Can't connect to MySQL server on'XXXXX'(111) 的问题
    使用什么工具连接MySQL Server
    CentOS 7修改MySQL 5.6字符集为UTF-8
    CentOS 7 Minimal编译安装MySQL5.6
    如何使浏览器默认下载文件而不是打开文件
  • 原文地址:https://www.cnblogs.com/lifeisshort/p/5438981.html
Copyright © 2011-2022 走看看