如何删除或取消设置多个嵌套级别的MongoSubdocument或字段?

时间:2015-05-27 09:55:44

标签: mongodb mongodb-query mongodb-update

{  
   "_id":"zxxxxxx",
   "UserId":"xxxxxx",
   "MobileNum":"xxxxxxx",
   "Global":{  
      "count":2,
      "EventType":{  
         "MT":{  
            "count":2,
            "count_data":{  
               "20120302":2
            },
            "Language":{  
               "Tamil":{  
                  "count":2,
                  "count_data":{  
                     "20120302":2
                  },
                  "Genre":{  
                     "Comedy":{  
                        "count":2,
                       "count_data":{  
                           "20120302":2
                        }
                     },
                     "Romance":{  
                        "count":2,
                        "count_data":{  
                           "20120302":2
                        }
                     }
                  },
                  "Cast":{  
                     "Actor":{  
                        "Siddharth Narayan":{  
                           "count":2,
                           "count_data":{  
                              "20120302":2
                           }
                        },
                        "Amala Paul":{  
                           "count":2,
                           "count_data":{  
                              "20120302":2
                           }
                        }
                     },
                     "Director":{  
                        "Balaji Mohan":{  
                           "count":2,
                           "count_data":{  
                              "20120302":2
                           }
                        }
                     },
                     "Music":{  
                        "Thaman S":{  
                           "count":2,
                           "count_data":{  
                              "20120302":2
                           }
                        }
                     }
                   },
                  "Censor":{  
                     "U":{  
                        "count":2,
                        "count_data":{  
                           "20120302":2
                        }
                     }
                  }
               }
            },
            "Dayofweek":{  
               "Weekends":{  
                  "count":2,
                  "1145":{  
                     "count":2,
                     "count_data":{  
                        "20120302":2
                     }
                  }
               }
            }
         }
      }
   }
}

必须从每个子文档中删除count_data吗?

如何在多级嵌套元素上删除或取消设置MongoSubdocument?

1 个答案:

答案 0 :(得分:1)

您的收藏太复杂,无法处理。 我不建议使用这样的文档结构并取消设置文档中的每个字段。如果你想取消设置count_data仍然使用mongo中的$unset -

db.collection.update(
{
    "_id": "zxxxxxx"
},
{
    $unset:
    {
    "Global.EventType.MT.count_data": "",
    "Global.EventType.MT.Language.Tamil.count_data": "",
    "Global.EventType.MT.Language.Tamil.Genre.Comedy.count_data": "",
    "Global.EventType.MT.Language.Tamil.Genre.Romance.count_data": "",
    "Global.EventType.MT.Language.Tamil.Cast.Actor.Siddharth Narayan": "",
    "Global.EventType.MT.Language.Tamil.Cast.Actor.Amala Paul.count_data": "",
    "Global.EventType.MT.Language.Tamil.Cast.Director.Balaji Mohan.count_data": "",
    "Global.EventType.MT.Language.Tamil.Cast.Music.Thaman S.count_data": "",
    "Global.EventType.MT.Language.Tamil.Censor.U.count_data": "",
    "Global.EventType.MT.Dayofweek.Weekends.1145.count_data": ""
    }
})