美文网首页
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删除字段笔记!

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

  • mysql笔记

    mysql笔记 1.删除主键 2.查看创建表的语句 3.删除字段 4.增加字段 5.修改字段

  • 2017-5-21 php mongodb 增删改查

    php mongodb 基本操作php array删除一个字段unset($arr["id"]); 1、增加数据 ...

  • 字段过滤

    mongodb隐藏字段 mongodb中所有字段默认都会被查找到,若我们不想让字段被查找到,可以在字段后面加上: ...

  • mongo 新增删除字段操作

    新增字段 对demo collection集合增加字段 删除字段 对demo collection集合删除字段

  • SQL基础语句

    SQL 基本语句记录 新建表 删除表: 插入数据: 删除数据: 更新数据: 新增字段: 删除字段: 修改字段: 重...

  • postgresql字段新增、删除、增删约束、字段和表重命名

    新增字段 删除字段 增加约束 删除约束 修改、删除默认值 修改数据类型 重命名字段 重命名表

  • DDL-表操作-修改&删除

    添加字段 修改数据类型 修改字段名和字段类型 删除字段 修改表名 删除表 删除指定表并重新创建该表

  • Mongodb基本操作

    mongodb数据库管理: Mongodb插入文档: Mongodb更新文档 Mongodb删除文档: Mongo...

  • oracle表字段操作

    添加字段 删除字段 修改字段 字段重命名 表重命名

网友评论

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

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