Mongodb $unset未按预期在Mongo中删除属性

Mongodb $unset未按预期在Mongo中删除属性,mongodb,meteor,Mongodb,Meteor,集合程序中的文档具有以下结构 { ... "Students" : { "Friday" : { "DUETS" : [ "", "" ], "JOHN MCKEON" : [ "", "" ], "TERRY STARR" : [ "", ""

集合程序中的文档具有以下结构

{
  ...
  "Students" : {
    "Friday" : {
        "DUETS" : [
            "", 
            ""
        ], 
        "JOHN MCKEON" : [
            "", 
            ""
        ], 
        "TERRY STARR" : [
            "", 
            ""
        ], 
        "REBECCA SAWYER-FAY" : [
            "", 
            ""
        ]
    }, 
    "Thursday" : {
        "SIOBHAN ARMSTRONG" : [
            "", 
            ""
        ], 
        "REBECCA SAWYER-FAY" : [
            "", 
            ""
        ], 
        "CHERYL RITZ" : [
            "", 
            ""
        ], 
        "CLARE DELANEY" : [
            "", 
            ""
        ]
    }, 
    "Tuesday" : {
        "JOHN MCKEON" : [
            "", 
            ""
        ]
    }, 
    "Wednesday" : {
        "LOIS ROSS" : [
            "9:00", 
            "10:00"
        ], 
        "ANNE DICKINSON" : [
            "10:00", 
            "11:00"
        ], 
        "BECKY HOWARD" : [
            "11:00", 
            "12:00"
        ], 
        "MAX LUCAS" : [
            "", 
            ""
        ]
    }
  },
  ....
}
如果我想删除Monday属性,我可以这样做,并且它可以按预期工作

Programs.update({ _id: id }, { $unset: { 'Students.Monday': "" }});
但是我很难将一个属性移到更深的一层。例如,如果我想删除“星期五”中的“二重唱”

我正在尝试我认为有效的方法:

Programs.update({ _id: id}, { $unset: { 'Students.Friday.DUETS': "" }});

我在这方面没有成功。什么应该起作用?

您可以这样删除:

db.collection.update({}, {$unset: {"Students.Friday.DUETS": 1}}, false, true);

从我看来,你的错误在别的地方。你确定你选择/检查了正确的实体吗?我想你是对的。问题在别处。调用更新的函数未按计划运行。