Я создаю две коллекции, один из которых создается временно, а затем «набивается» в другой документ из основной коллекции.Как обновить конкретный индекс массива в 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
Кадровая выглядит следующим образом:
Департамент документ во временной коллекции я пытаюсь добавить ниже: