MongoDB 与字符串数组中值的字段的 expr+gt+lt 匹配

MongoDB match with expr+gt+lt of a field with value in array of string

{
prediction:{
        B-experience:["5"]    
           }
       }

在这里,我需要找到 B-experience 大于和小于某个最小值和最大值 values.In 我的文档 B-experience 在字符串数组中。所以我必须将该数组字符串转换为 int 并通过 expr 与“gt”和“lt”进行聚合匹配。我尝试了很多方法。但没有得到想要的结果。有人能帮帮我吗

您可以使用 $arrayElemAt 从数组中取出字符串,并使用 $toInt 将字符串转换为 int。

db.collection.aggregate([
  {
    $project: {
      predictionBexperience: {
        "$arrayElemAt": [
          "$prediction.B-experience",
          0
        ]
      }
    }
  },
  {
    $project: {
      predictionBexperience: {
        "$toInt": "$predictionBexperience"
      }
    }
  },
  {
    $match: {
      predictionBexperience: {
        $gt: 2,
        $lte: 7
      }
    }
  }
])

playground 上可以看到更多示例数据。