gpt4 book ai didi

javascript - 数组上的 $gte 和 $lte

转载 作者:行者123 更新时间:2023-11-30 19:51:06 25 4
gpt4 key购买 nike

我有架构

{ summaries:
[
{
type: 'temp',
min: 10,
max: 40
},
{
type: 'humidity',
min: 3,
max: 40
}
],
thresholds: [
{
type: 'temp',
low: -10,
high: 40
},
{
type: 'humidity',
low: 9,
high: 30
}
]
}

上面这个对象是集合中的一条记录。如果 summaries.type == 'temp' and thresholds.type == 'temp' and summaries.min > thresholds.low

我想获取记录

与阈值对象比较的摘要对象必须是同一类型。 temp 与 temp 比较,hum 与 hum 比较。有任何摘要对象温度 min < 任何阈值对象温度将被返回

例子:

{ summaries:
[
{
type: 'temp',
min: 10,
max: 40
},
{
type: 'humidity',
min: 3,
max: 40
}
],
thresholds: [
{
type: 'temp',
low: -10,
high: 40
},
{
type: 'humidity',
low: 9,
high: 30
}
]
}

将返回 temp min = 10,threshold low = -10。

{ summaries:
[
{
type: 'temp',
min: 10,
max: 40
},
{
type: 'humidity',
min: 3,
max: 40
}
],
thresholds: [
{
type: 'temp',
low: 20,
high: 40
},
{
type: 'humidity',
low: 9,
high: 30
}
]
}

将不会返回,因为 temp min = 10,threshold temp low = 20 尽管 threshold hum low = 9

最佳答案

您可以使用 $expr 使用以下查询

db.collection.find({
"$expr": {
"$gt": [
{
"$arrayElemAt": [
"$summaries.min",
{ "$indexOfArray": ["$summaries.type", "temp"] }
]
},
{
"$arrayElemAt": [
"$thresholds.low",
{ "$indexOfArray": ["$thresholds.type", "temp"] }
]
}
]
}
})

关于javascript - 数组上的 $gte 和 $lte,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54453353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com