删除mongodb文档字段

时间:2015-05-27 08:31:40

标签: mongodb mongodb-query

我想更新我的文档结构,我希望根据值删除特定字段。

"id" : "company",
"keys" : {
    "0" : {
        "key_name" : "Name",
        "section_head" : "Profile"
    },
    "1" : {
        "key_name" : "Sector",
        "section_head" : "Profile"
    },
    "2" : {
        "key_name" : "SubSector",
        "section_head" : "Profile"
    }}

我想从key中删除,其中key_name是Subsector,id是company。

1 个答案:

答案 0 :(得分:0)

如果您不知道索引,那么您的解决方案应该是:

var doc = db.myDoc.find({_id : "company"});
var keys = [];
for (var key in doc) {      
    if (doc.hasOwnProperty(key) && key.key_name === "SubSector"){
        keys.push(key);
    }
}

var arrayLength = keys.length;
for (var i = 0; i < arrayLength; i++) {
     delete doc[keys[i]];    
}

db.myDoc.save(doc);

当您在MongoDb document

中使用动态密钥时,这是主要问题

当然你可以优化这个解决方案,但它留给你( - :

---编辑---

db.eval(function () {
   db.myDoc.find({id: "company"}).forEach(function (e) {
      var keys = [];
      for (var key in doc) {
         if (doc.hasOwnProperty(key) && key.key_name === "SubSector"){
             keys.push(key);
         }
     }

     var arrayLength = keys.length;
     for (var i = 0; i < arrayLength; i++) {
         delete doc[keys[i]];
     }

     db.myDoc.save(doc);
     });
});