如何使用 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
的字段,用于比较您想要的值:
- 第一个数组的最后(第二个)值
- 最后一个数组中的最后一个(第二个)值
并且输出将是 true
或 false
是否大于数字。
db.collection.aggregate([
{
"$project": {
"isBigger": {
"$cond": {
"if": {
"$gt": [
{
"$last": {
"$first": "$priceRange"
}
},
{
"$last": {
"$last": "$priceRange"
}
}
]
},
"then": true,
"else": false
}
}
}
}
])
示例here
我正在尝试比较嵌套数组中第一个元素和最后一个元素之间的价格。
以下是我的部分数据:
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
的字段,用于比较您想要的值:
- 第一个数组的最后(第二个)值
- 最后一个数组中的最后一个(第二个)值
并且输出将是 true
或 false
是否大于数字。
db.collection.aggregate([
{
"$project": {
"isBigger": {
"$cond": {
"if": {
"$gt": [
{
"$last": {
"$first": "$priceRange"
}
},
{
"$last": {
"$last": "$priceRange"
}
}
]
},
"then": true,
"else": false
}
}
}
}
])
示例here