如何在MongoDB中缺少字段的数组中找到最大值的索引?

kaixin liu

下面是一个非常简单的数据示例:

[
  {
    "data": [
      {
        "uid": "0",
        "value": 0,
        
      },
      {
        "uid": "1",
        "value": 1,
        
      },
      {
        "uid": "2",
        "value": 2,
        
      }
    ]
  }
]

然后,我想找到uid最大的对应value就我而言,结果应为"2"

这是我正在使用的查询:

db.collection.aggregate([
  {
    "$project": {
      "_id": 0,
      "value_argmax": {
        "$arrayElemAt": [
          "$data.uid",
          {
            "$indexOfArray": [
              "$data.value",
              {
                "$max": "$data.value"
              }
            ]
          }
        ]
      }
    }
  }
])

该代码适用于我的情况。但是,如果存在某些缺少的字段,查询代码可能会失败。例如,如果我有一个数据示例,如下所示:

[
  {
    "data": [
      {
        "uid": "0",
        // "value": 0, // missing field
        
      },
      {
        "uid": "1",
        "value": 1,
        
      },
      {
        "uid": "2",
        "value": 2,
        
      }
    ]
  }
]

查询的结果将是“ 1”而不是“ 2”(在我的情况下,我只想省略缺少的字段)。

那么,我该怎么做才能解决查询问题?这是简单的测试用例:https : //mongoplayground.net/p/8qiFRB8EsSE

提前致谢!

温弗里德(Wernfried Domscheit)

试试这个:

db.collection.aggregate([
   {
      $set: {
         data: {
            $filter: {
               input: "$data",
               cond: { $eq: [{ $max: "$data.value" }, "$$this.value"] }
            }
         }
      }
   },
   { $set: { value_argmax: { $first: "$data.uid" } } },
   { $unset: "data" }
])  

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在多个数组中找到最大值并返回java中第一个索引的值?

如何在向量列中找到最大值的索引?

如何在 Python 的列表中找到最大值的索引?

如何在整个带有索引的2D数组中找到最大值

如何在数组中找到并打印最大值的索引?

如何在二维数组(矩阵)中找到局部最大值的索引?

如何在数组中找到最大值

如何在Swift对象数组中找到最大值?

如何在教堂中找到数组的最大值

如何在dataframe列的数组中找到最大值?

如何在numpy数组列中找到最大值?

如何在多维数组中找到最大值

如何在numpy数组中找到对应的最大值

如何在列表中找到数组的最大值?

如何在Perl 6中的列表中找到最大值的索引?

如何在C中的数组中找到最大值的位置

如何在C中找到数组中每5个元素的最大值

如何找到数组最大值的索引?

快速数组中找到最大值的索引

如何在numpy中的3d数组中找到最小值和最大值,并将结果分组?

如何在julialang中找到最后一个最大值的索引?

如何在熊猫数据框中找到两个索引之间的最大值

如何在二维列表的一行中找到最大值及其索引?

如何在 numpy 數組中找到行索引的最大值?

如何在MongoDB中获取字段的最大值

如何在 Python 中找到二维数组的最小值和最大值

如何在数组中找到最大值和最小值

如何找到数组中的最大值?

在Ruby中的哈希数组中找到最大值