如何使用 mongodb 比较嵌套数组中的两个元素?

How to compare two elements inside nested arrays using mongodb?

我正在尝试比较嵌套数组中第一个元素和最后一个元素之间的价格。

以下是我的部分数据:

priceRange:[
   [1600732800000,5.28424438726287],
   [1600819200000,5.08434522342211],
   [1600905600000,3.491229168216385],
   [1600992000000,4.573890580327729],
   [1601078400000,4.702973876095848]
]

所以本质上我想知道第一个数组中的 第二个元素 (5.28424438726287) 是否大于 最后一个数组中的第二个元素 (4.702973876095848)


我很难 select 嵌套数组中的最后一个数组: 以下无效:

$expr: { $gt: [{ $last: "$priceRange" }, 0.000001] }

我可以select第一个元素:

priceRange.0.1

然后有一个问题,你如何比较它们同时还有其他过滤器约束?

{name: "Some stock", comparing the prices}

您可以添加这个聚合阶段:

此查询创建一个名为 isBigger 的字段,用于比较您想要的值:

  • 第一个数组的最后(第二个)值
  • 最后一个数组中的最后一个(第二个)值

并且输出将是 truefalse 是否大于数字。

db.collection.aggregate([
  {
    "$project": {
      "isBigger": {
        "$cond": {
          "if": {
            "$gt": [
              {
                "$last": {
                  "$first": "$priceRange"
                }
              },
              {
                "$last": {
                  "$last": "$priceRange"
                }
              }
            ]
          },
          "then": true,
          "else": false
        }
      }
    }
  }
])

示例here