美文网首页
mongodb删除字段笔记!

mongodb删除字段笔记!

作者: DragonersLi | 来源:发表于2021-09-16 12:02 被阅读0次

    删除整个文档的某几个字段:db.collection.update({},{$unset: {field1:1,field2:1}},{multi: true});

    {uid:{$lt:2000}}, #删除的where条件
    {$unset: {name:1,mobile:1}}, #删除的字段,可以多个
    {multi: true} #批量删除,无此项则只删除匹配的第一个
    

    不带{multi: true}只匹配删除一条文档记录

    > db.team_award.update({uid:{$lt:600}},{$unset: {mobile:1,vip:1}});
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    

    带条件的多字段批量删除

    > db.team_award.update({uid:{$lt:2000}},{$unset: {mobile:1,nickname:1}},{multi: true});
    WriteResult({ "nMatched" : 1481, "nUpserted" : 0, "nModified" : 994 })
    

    不带条件的字段批量删除

    > db.team_award.update({},{$unset: {id:1}},{multi: true});
    WriteResult({ "nMatched" : 394538, "nUpserted" : 0, "nModified" : 394538 })  
    > db.team_award.findOne();
    {
        "_id" : ObjectId("6141c099aa08cc1a10128b61"),
        "uid" : 508,
        "mobile" : "150xxxx5913",
        "nickname" : "test",
        "vip" : 1,
        "pid" : [ ],
        "money" : "143.30",
        "team_award" : 0,
        "award" : 0,
        "cycle" : 202108,
        "status" : 0,
        "create_time" : 1631699075,
        "update_time" : 0
    }
    

    以上删除的是普通类型的字段,当存储的字段是数组,我们要整个删除时,可用上面方法;如果要删除数组字段中的某个元素字段时则不通用。删除数组字段的某些元素:

    #where条件为空则循环全部文档数据,然后每个文档item数组遍历,delete删除数组的元素,然后save保存
    db.team_award.find({}).forEach(function(item) {
        var pid = item.pid;
        for(var i = 0; i < pid.length; ++i) {  
            if(pid[i]["upid"]){ //循环遍历删除pid数组中的upid字段
                delete (pid[i]["upid"]);
            }
            if(pid[i]["tpid"]){ //循环遍历删除pid数组中的tpid字段
                delete (pid[i]["tpid"]);
            }
        }
        db.team_award_20210915.save(item);//删除后保存文档
    }); 
    

    其中pid存储的是数组,每个元素包含id字段,如果是第一个元素,则又包含upid字段,如果是最后一个元素又包含tpid字段

    > db.team_award.findOne({uid:13457}) #查找一条文档记录
    #删除前,数组字段内容
    "pid" : [
            {
                "id" : 3077,
                "upid" : 3077
            },
            {
                "id" : 2956
            },
            {
                "id" : 508,
                "tpid" : 508
            }
        ],
    
    #删除后,数组字段内容
        "pid" : [
            {
                "id" : 3077
            },
            {
                "id" : 2956
            },
            {
                "id" : 508
            }
        ],
    
    
    team_award > pid
    
    #删除前:
    (Document) 2 Fields 528 528 
    (Document) 1 Field  525     
    (Document) 1 Field  524     
    (Document) 2 Fields 508     508
    
    #删除后:
    (Document) 1 Field  528
    (Document) 1 Field  525
    (Document) 1 Field  524
    (Document) 1 Field  508
    

    相关文章

      网友评论

          本文标题:mongodb删除字段笔记!

          本文链接:https://www.haomeiwen.com/subject/apcwjftx.html