2015-05-27 6 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 - подсектор, а 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

Конечно, вы можете оптимизировать этот решение, но оно осталось для вас (-:

--- EDIT ---

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

. gl и, пожалуйста, не забудьте проголосовать, если я помог вам – royB

Смежные вопросы