Я использую агрегацию MongoDB.
Используя $in
Я проверяю, существует ли значение в массиве или нет, И я хочу вернуть соответствующий объект из массива calificacion
в calificacion_usuario
поле. (мой _id
является уникальным в массиве).
Я пытался использовать $first"
для возврата текущего элемента. Это не работает, не знаю, зачем и что использовать.
Как я могу это сделать?
Пример Do c:
{
"cargo" : "Presidente",
"calificacion" : [
{
"_id" : "5e894ae6fa9fd23780bcf472",
"estrellas" : 3
},
{
"_id" : "5e895187fa9fd23780bcf478",
"estrellas" : 5
}
]}
Запрос:
Politico.aggregate([
{
$group: {
_id: "$cargo",
nuevo_formato: {
$push: {
$mergeObjects: [
"$$ROOT",
{
"calificacion_promedio": { $avg: "$calificacion.estrellas" },
"calificacion_usuario": { $cond: [{ $in: [req.body.id_usuario, "$calificacion._id"] }, "$first", false] },
"calificacion_numero_encuestas": { $size: "$calificacion" }
}
]
}
}
}
},