MongoDB unset 删除子项中的所有内容

Posted

技术标签:

【中文标题】MongoDB unset 删除子项中的所有内容【英文标题】:MongoDB unset removes everything in child 【发布时间】:2021-03-28 21:13:59 【问题描述】:

我有一个这样的数据库结构:

    "_id" : ObjectId("5fd48e12e5e0fd174c1a7260"), 
     "races" :  
               "example1" :  "date" : "12/18/2020", "status" : "pending" , 
               "example2" :  "date" : "12/18/2020", "status" : "domestic"  
            

我正在尝试使用以下代码块(javascript)删除example 1

  self.db  =  client.db("authinfo");
  self.collection = self.db.collection("users");

this.delete_both_races = function (user1) 

    self.collection.updateOne(user:user1 ,$unset:races:"example1" ,function(error,result));

在 mongo.exe 命令行程序中运行以下命令时会发生同样的情况:

db.users.updateOne(user:"anything" , $unset:races:"example1")

我得到(取消设置后的剩余元素)的结果:

 "_id" : ObjectId("5fd48e12e5e0fd174c1a7260") 

想要的结果:

   "_id" : ObjectId("5fd48e12e5e0fd174c1a7260"), 
    "races" :  
                   "example2" :  "date" : "12/18/2020", "status" : "domestic"  
                

【问题讨论】:

【参考方案1】:

您应该取消设置 races.example1 而不是 races

来自MongoDB document,

$unset 表达式中的指定值(即“”)不会影响操作。

要在嵌入文档或数组中指定 a,请使用点表示法。

Mongo Playground

【讨论】:

简洁易懂!!谢谢(点赞)

以上是关于MongoDB unset 删除子项中的所有内容的主要内容,如果未能解决你的问题,请参考以下文章

《MongoDB入门教程》第18篇 文档更新之$unset操作符

Mongodb $unset 留下空数组对象(javascript)

mongodb 中多个字段的 $unset

MongoDB之修改器

MongoDB入门三

mongodb_修改器($inc/$set/$unset/$push/$pop/upsert......)