`Para cada "lost user":`
lostUsers.forEach(function(user){
`Buscas su home (que fue alterado)` *Aquí tengo duda si "user" es el id o es el objeto del usuario*
var currentHome = db.home.findOne({userId:user});
`Buscas su home en el backup`
var backedUpHome = db.homeBackup.findOne({userId:user});
`Buscas el mismo home del backup pero lo guardas en otra segunda variable`
var restoredHome = db.homeBackup.findOne({userId:user});
`Si el home con "userId" no existe:`
if(currentHome == null){
print("not found");
//No se registro, just update
//Find in backup
//db.home.update({userId:{$exists:false}},tojson(restoredHome)) //UNCOMMENT
`Reemplazas el home inexistente por el home restaurado`
db.home.save(restoredHome);
`Si el home con "userId" existe:`
}else{
print('found');
//Usuario se registro de nuevo (merge)
`Reemplazas todos estos campos por los del home restaurado`
var merge = {
$set : {
signUpDate : restoredHome.signUpDate,
teamName : restoredHome.teamName,
fanOf : restoredHome.fanOf,
createdAt : restoredHome.createdAt,
knockout : restoredHome.knockout,
lineUpHistory : restoredHome.lineUpHistory,
points : restoredHome.points,
rankings : restoredHome.rankings,
isRegistred : restoredHome.isRegistred,
roundUpdates : restoredHome.roundUpdates,
myAdminGroups : restoredHome.myAdminGroups
}
};
//Merge groups
`Si hay grupos en el home existente:`
if(currentHome.groups.length > 0){ // necessary??
currentHome.groups.forEach(function(group){
var found = false;
restoredHome.groups.forEach(function(groupBackup){
if(String(group.groupId) == String(groupBackup.groupId)){
//print('group ' + group + " found");
found = true;
}
});
if(!found){
//print('group ' + group + " not found");
restoredHome.groups.push(group);
}
});
}
`Reemplazas los grupos del home existente por los grupos del home restaurado más los que añadiste`
merge.$set.groups = restoredHome.groups;
//Merge groups g18
if(currentHome.groupsG18.length > 0){ // necessary??
currentHome.groupsG18.forEach(function(group){
var found = false;
restoredHome.groupsG18.forEach(function(groupBackup){
if(String(group.groupId) == String(groupBackup.groupId)){
found = true;
}
});
if(!found){
restoredHome.groupsG18.push(group);
}
});
}
`Reemplazas los grupos g18 del home existente por los grupos del home restaurado más los que añadiste`
merge.$set.groupsG18 = restoredHome.groupsG18;
//print(tojson(merge.$set.groups));
`Haces el update del home existente` *Aquí no falta { multi: true } ?*
db.home.update({userId:user}, merge) //UNCOMMENT
}
//Save process
`Buscas nuevamente el home con "userId"`
var finalHome = db.home.findOne({userId:user});
`Y en el collection "mergeResult" guardas los tres homes, el alterado, el del backup y el restaurado junto con el "userId"`
db.mergeResult.insert({
"userId" : user,
"backedup" : backedUpHome,
"messedUp" : currentHome,
"merged" : finalHome
})
})
Comments