2015-05-27 129 views
0

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

"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_name中删除key_name是子部门和id是公司。

+1

是否有必要在您的文档结构中将数字作为关键字?由于所有数字的内容(键/结构)相同,所以似乎不需要使用数字作为键。 – Vishwas

回答

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); 
    }); 
}); 
+0

雅这是一个解决方案....我已经做了类似的使用PHP的东西,但它会很好,如果你可以给我一个mongo查询做同样的 –

+0

更新。如果我帮助过你,请不要忘记投票 – royB