MongoDB 取消设置会删除 child 中的所有内容

问题描述 投票:0回答:1

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

   { "_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" } 
               } 
javascript mongodb mongodb-query unset
1个回答
2
投票

您应该取消设置

races.example1
而不是
races

来自MongoDB文档

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

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

db.collection.update({},
{
  $unset: {
    "races.example1": ""
  }
})

蒙戈游乐场

© www.soinside.com 2019 - 2024. All rights reserved.