-
Notifications
You must be signed in to change notification settings - Fork 12
CITAS
Carolina Celeste edited this page Mar 19, 2020
·
6 revisions
Este aggregate une previamente los turnos y sobreturnos para que sean considerados de forma igual. Cambia el tipo de turno a los sobreturnos para identificarlos.
Rellenar los stages $match
como sean necesarios.
const pipeline = [
{
$match: ...
},
{
$addFields: {
'sobreturnos.tipoTurno': 'sobreturno'
}
},
{
$addFields: {
_sobreturnos: [{ turnos: '$sobreturnos' }]
}
},
{
$addFields: {
bloques: { $concatArrays: ['$_sobreturnos', '$bloques'] }
}
},
{ $unwind: '$bloques' },
{ $unwind: '$bloques.turnos' },
{
$match: ...
},
];
Listado de turnos virtuales disponibles
const pipeline = [
{
$match: {
'bloques.restantesMobile': {$gt: 0},
'estado': 'publicada',
'horaInicio': { $gte: ISODate("2020-03-20T00:00:03.707-03:00")}
}
},
{
$unwind: '$bloques'
},
{
$match: {
'bloques.restantesMobile': {$gt: 0},
'bloques.restantesProgramados': {$gt: 0}
}
},
{
$addFields: {
restantes: {
$cond: {
if: {
$gte: ['$bloques.restantesMobile', '$bloques.restantesProgramados']
},
then: '$bloques.restantesProgramados',
else: '$bloques.restantesMobile'
}
}
}
},
{
$project: {
prestacion: '$tipoPrestaciones.term',
organizacion: '$organizacion.nombre',
fecha: {
'$dateToString': { 'format': '%d/%m/%Y', date: '$horaInicio' }
},
totalTurnosMobile: "$bloques.restantesMobile",
restantes: 1
}
}
];