删除mongodb文档字段
我想更新我的文档结构,我希望删除基于值的特定字段删除mongodb文档字段,mongodb,mongodb-query,Mongodb,Mongodb Query,我想更新我的文档结构,我希望删除基于值的特定字段 "id" : "company", "keys" : { "0" : { "key_name" : "Name", "section_head" : "Profile" }, "1" : { "key_name" : "Sector", "section_head" : "Profile" }, "2" : { "key_nam
"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为Subsector,id为company的key中删除。如果您不知道索引,您的解决方案应该是:
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);
在文档结构中是否需要将数字作为键?由于所有数字的内容(键/结构)都是相同的,似乎不需要使用数字作为键。是的,这是一个解决方案……我已经用php做了类似的事情,但如果你能给我一个mongo查询来做同样的更新,那就太好了。如果我帮了你,请别忘了投赞成票
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);
});
});