码迷,mamicode.com
首页 > 数据库 > 详细

MongoDB学习笔记(二)

时间:2015-11-01 17:51:58      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:

MongoDB基本操作之Update

update方法参数

技术分享
//query:更新的条件
//obj:更新的对象
//Boolean类型,true:没有则新增,false:只更新不新增
//multi:是否允许批量更新
function (query, obj, upsert, multi) {
    //dosomething
}
View Code

文档替换:

技术分享
var where=
{
    "age":29
};
var p1 = db.user.findOne(where);
p1.age++;//年龄自增1
db.user.update(where,p1);//将匹配到的第一个文档整个替换成新的文档
View Code

常用修改器:

  1. "$set"修改器:$set修改器用于修改文档中的某个字段的值,如果该字段不存在则会新增该字段。
    技术分享
    var where=
    {
        "_id":ObjectId("5634b21827480baffb199df4")
    };
    var action=
    {
        "$set":{ "hobby":"跑步" }//$set修改器会更新或者新增指定的字段
    }
    db.user.update(where,action);//为邓超新增一个hoppy字段
    View Code

    修改字段的类型

    技术分享
    var where=
    {
        "_id":ObjectId("5634b21827480baffb199df4")
    };
    var action=
    {
        "$set":{"hoppy":["跑步","唱歌","跳舞"]}//将之前的hoppy字段修改成一个兴趣数组
    }
    db.user.update(where,action);
    View Code

    修改内嵌文档中的字段

    技术分享
    var where=
    {
        "_id":ObjectId("5634b21827480baffb199df4")
    };
    var action=
    {
        "$set":
        {
            "family":
            {
                "wife":"孙俪",
                "father":"未知",
                "monther":"未知",
                "sons":["邓涵之","邓涵一"]
            }
        }
    };
    db.user.update(where,action);//增加邓超家庭关系数据
    action=
    {
        "$set":{"family.father":"邓九公"}//将邓超关系文档中的父亲字段改为邓九公
    }
    db.user.update(where,action);
    View Code

    删除文档中的某个字段

    技术分享
    var where=
    {
        "_id":ObjectId("5634b21827480baffb199df4")
    };
    var action=
    {
        "$unset":{"family.wife":1}//$unset操作符用于移除某个字段
    };
    db.user.update(where,action);
    View Code
  2. "$inc"修改器:自增或自减修改器,原子性操作。
    技术分享
    var where=
    {
        "_id":ObjectId("5634b21827480baffb199df4")
    };
    var action=
    {
        "$inc":{"age":1}//年龄自增1,-1则为自减,该操作符只能作用于数值类型,否则会出异常
    }
    db.user.update(where,action);
    
    db.user.find(where);
    View Code
  3. "$push"操作符:向一个数组的末尾添加一个元素,如果指定数组不存在,则该数组会被创建
    技术分享
    var where=
    {
        "_id":ObjectId("5634b21827480baffb199df4")
    };
    var action=
    {
        "$push":{"family.sons":"邓紫棋"}//往sons数组尾部添加一个元素,如果sons数组不存在,则会被创建
    };
    db.user.update(where,action);
    View Code
  4. "$each"操作符:$push操作符配合$each操作符能实现一次往数组中添加多个元素
    技术分享
    var where=
    {
        "_id":ObjectId("5634b21827480baffb199df4")
    };
    var action=
    {
        "$push":{"family.sons":{"$each":["邓紫棋","邓小山","邓九妹"]}}//将数组中的元素循环添加到指定数组中
    };
    db.user.update(where,action);
    View Code
  5. "$slice"操作符:用于设置数组的长度,当值为正数时,只保留数组中的前N个元素,为负数时,保留数组中的最后N个元素
    技术分享
    var where=
    {
        "_id":ObjectId("5634b21827480baffb199df4")
    };
    var action=
    {
        "$push":{"family.sons":{"$each":["邓紫棋","邓涵一","邓涵之"],"$slice":-2}}//将数组中的元素循环添加到指定数组中
    };
    db.user.update(where,action);
    View Code
  6. "$sort"操作符:对数组中的元素进行排序
    技术分享
    {
        "_id":ObjectId("5634b21827480baffb199df4")
    };
    var action=
    {
        "$push":{"family.sons":{"$each":["邓紫棋","邓涵一","邓涵之"],"$sort":-1}}//排序可以按照某个字段排,也可以指定直接指定-1,0或1
    };
    db.user.update(where,action);
    View Code
  7. "$addToSet"操作符:往数组中添加新元素且只有当数组中不存在的时候才会新增
    技术分享
    var where=
    {
        "_id":ObjectId("5634b21827480baffb199df4")
    };
    var action=
    {
        "$addToSet":{"family.sons":{"$each":["邓紫棋","邓涵夕"],"$sort":-1}}//addToSet只有当数组中没有该元素的时候才会往里面新增
    };
    db.user.update(where,action);
    View Code
  8. "$pop"操作符:从数组顶部或尾部删除元素,可用于模拟队列或者栈
    技术分享
    var where=
    {
        "_id":ObjectId("5634b21827480baffb199df4")
    };
    var action=
    {
        "$pop":{"family.sons":-1}//1:从数组头部删除一个元素,-1从数组尾部删除一个元素
    };
    db.user.update(where,action);
    View Code
  9. "$pull"操作符:删除数组中的所有匹配元素
    技术分享
    var where=
    {
        "_id":ObjectId("5634b21827480baffb199df4")
    };
    var action=
    {
        "$pull":{"family.sons":"邓涵一"}//删除指定数组中的所有的指定元素
    };
    db.user.update(where,action);
    db.runCommand("getLastError");
    View Code
  10. 通过数组元素位置修改元素:
  11. 技术分享
    var where=
    {
        "_id":ObjectId("5634b21827480baffb199df4")
    };
    var action=
    {
        "$inc":{"age":-5},//年龄自减5
        "$set":{"family.sons.0":"邓紫棋"},//直接通过下标的形式修改sons数组中的第一个元素的值为:邓紫棋
    };
    db.user.update(where,action);
    View Code

    使用$定位:

    技术分享
    var where=
    {
        "family.sons.name":"邓紫棋"
    };
    var action=
    {
        //$符号自动定位匹配到的数组元素,例如第一个匹配到的数组元素下标为3,那么$实际上可以认为就是3
        "$set":{"family.sons.$.name":"邓小山"},
    };
    db.user.update(where,action);
    View Code 
  12. findAndModify函数:更新并返回某个文档
    技术分享
    db.user.findAndModify({
        query: {name: ‘a2‘}, //查询条件
        sort: {age: -1}, //排序方式
        update: {$set: {name: ‘张杰‘}, $inc: {age: 2}},//更新,或使用remove:true执行删除
        new:true//返回更新后的文档
    });
    View Code

     

     

MongoDB学习笔记(二)

标签:

原文地址:http://www.cnblogs.com/Jabben/p/4926310.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!