MongoDB-如何在$ group中使用$ in时返回数组中的匹配项?

yavg

我正在使用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-操场

参考: $ indexOfArray$ arrayElemAt

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在mongodb中使用group by?

如何在使用$ push运算符时确保mongodb数组中的项是唯一的

在MongoDB中,如何在数组中使用“ $ expr”?

如何在MongoDB中返回数组匹配条件的元素

如何在mongoDB中的$ group中使用其他自定义字段中的count / {$ sum:1}?

如何在嵌入数组mongodb的数组中使用$ in

如何在Mongodb中使用map函数内部匹配

$ dateToString在mongodb中使用$ group返回null

如何在mongoDB中使用数组进行查找

如何在MongoDB中使用数组子字段创建列表?

如何在mongodb中使用数组查询集合

如何在数组元素中使用mongodb投影查询

如何在MongoDB的嵌套子数组中使用$ filter?

如何在mongodb中为group by使用聚合

如何在Java中使用ObjectID更新MongoDB中的文档

如何在MongoDB 3.2中使用DBPointer bson类型

如何在MongoDB中的Spring数据中使用动态模式?

如何在MongoDB中的查找查询中使用别名

如何使用c#查询从mongodb返回的json数组中的特定项

如何在mongodb中使用查找来匹配数组字段?

如何在 MongoDB Compass 社区中使用 MongoDB 聚合删除重复项

如何在 mongodb 中为 javascript 数组中的所有元素查找匹配项?

如何在MongoDB中的$ group内创建嵌套数组?

如何在mongodb中使用ObjectId更新对象数组中的字符串数组?

如何在mongodb集合中存储纬度和经度?以及如何在Spring中使用它?

由于mongodb在docker容器中,我如何在MupX中使用restore mongodb?

如何在MongoDB 2.7中使用MongoDB C#驱动程序更新通用类型

如何在SailsJs中使用mongoDB仅在数组中获取_id字段

如何在mongodb中使用$ project在数组中显示特定字段