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

MongoDB unset removes everything in child

我有这样的数据库结构:

   { "_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" } 
               } 

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

来自 MongoDB document,

The specified value in the $unset expression (i.e. "") does not impact the operation.

To specify a in an embedded document or in an array, use dot notation.

Mongo Playground