2015-02-19 2 views
0

Моя схема mongoDB, как показано ниже.Значение поиска в вложенном массиве без индекса в mongodb

"interpretationlist": [ 
{ 
    "interpretations": [ 
     { 
      "id": "1", 
      "value": "value1" 
     }, 
     { 
      "id": "2", 
      "value": "value2" 
     } 
    ] 
}, 
{ 
    "interpretations": [ 
     { 
      "id": "3", 
      "value": "value3" 
     } 
    ] 
} 
] 

и я хочу, чтобы искать interpretation которого id является 1 и обновить его значение. Как это сделать. понятия не имею, как я могу это сделать.

+0

Я думаю, что этот вопрос может помочь вам 'http://stackoverflow.com/questions/7714216/add-new-field-to-a-collection-in-mongodb' – Yogesh

+0

Я не хочу добавлять новое поле, я хочу обновить значение в массиве. –

+1

http://stackoverflow.com/questions/23577123/update-nested-array-with-mongoose-mongodb –

ответ

0

Привет Я не знаю, как сделать это в Монго запросе, но я пишу ниже скрипт, который будет решать ваши проблемы

  db.collectionName.find({ 
    "interpretationlist": { 
     "$exists": true 
    } 
    }).forEach(function(data) { 
    for (var i = 0; i < data.interpretationlist.length; i++) { 
     for (var j = 0; j < data.interpretationlist[i].interpretations.length; j++) { 
      var query = {}; 
      var updateQuery = {}; 
      findkey = []; 
      findkey.push("interpretationlist." + i + ".interpretations." + j + ".id"); 
      query[findkey] = "1"; 
      updateQuery[findkey] = "20"; 
      db.collectionName.update(query, { 
       "$set": updateQuery 
      }, false, false); 
     } 
    } 
    }) 
Смежные вопросы