我正在使用MongoDB的聚合。
使用$in
我正在检查值是否存在于数组中,并且我想将匹配的对象从calificacion
数组返回到calificacion_usuario
字段中。(我_id
在数组中是唯一的)。
我尝试使用$first"
返回当前元素。它不起作用,不确定为什么以及使用什么。
我该怎么做?
样本文件:
{
"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" }
}
]
}
}
}
},
$first
不能这样工作,您需要替换$first
为以下代码:
{
$arrayElemAt: [ /** Get an element from 'calificacion' based on position */
"$calificacion",
{
$indexOfArray: ["$calificacion._id", req.body.id_usuario], /** Check in which position 'req.body.id_usuario' exists (will be a number) */
},
],
}
测试: MongoDB-操场
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句