2017-02-22 3 views
0

Я создаю две коллекции, один из которых создается временно, а затем «набивается» в другой документ из основной коллекции.Как обновить конкретный индекс массива в mongoDB с использованием переменной

Я пытаюсь понять, как я могу обновить конкретный индекс массива способом, подобным ниже.

function stuffDepartmentsIntoLocations() { 
    var ops = []; 

    db.HR.find().forEach(function(country) 
     { 
      for(var i=0;i < country.location.length; i++) { 
       db.tempDEPTS.find({"LOCATION_ID":location.LOCATION_ID}).forEach(function(dept) 
        { 
         ops.push(
          { 
            "updateOne": 
           { 
             "filter": {"_id": country._id }, 
             "update\": {"$push": {"location[i].department":dept}} 
             } 
           } 
          ); 
         if (ops.length == 1000) { 
           db.HR.bulkWrite(ops,{ "ordered": false }); 
           ops = []; 
         } 
        }    
       );   
      }  
     } 
    ); 

    if (ops.length > 0) { 
    db.HR.bulkWrite(ops,{ "ordered": false }); 
    } 

return true; 
}" 

Это, кажется, не будет работать:

"update": {"$push": {"location[i].department":dept}} 

Ошибка ниже: сбор документов

{ "serverUsed" : "127.0.0.1:27017" , "retval" : true , "ok" : 1.0} { "serverUsed" : "127.0.0.1:27017" , "ok" : 0.0 , "errmsg" : "ReferenceError: location is not defined :\nstuffDepartmentsIntoLocations/<@:1:195\[email protected]/mongo/shell/query.js:501:1\[email protected]:1:74\n" , "code" : 139 , "codeName" : "JSInterpreterFailure"} [statistics] disconnected

Кадровая выглядит следующим образом:

enter image description here

Департамент документ во временной коллекции я пытаюсь добавить ниже:

enter image description here

ответ

0

Ааааа ... только что видел это, я имел обыкновение иметь Foreach, но изменил его индексный массив:

Это:

db.tempDEPTS.find({"LOCATION_ID":location.LOCATION_ID}).forEach(function(dept) 

Должно быть так:

db.tempDEPTS.find({"LOCATION_ID":country.location[i].LOCATION_ID}).forEach(function(dept) 

И теперь мои отделы получают заправленные в документы местоположения на основе LOCATION_ID:

enter image description here

Должен быть лучшим способом сделать это, но, кажется, работает.

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