MongoDB -如何在.find()方法中设置$gte和$lte选项



有一个包含year字段的表。(字符串类型)

在这个表中,我想搜索$gte$lte之间的一些行。

如果行如下:

[
{
"year": "2022"
},
{
"year": "2023"
},
{
"year": "2024"
},
{
"year": "2024"
},
{
"year": "2025"
},
{
"year": "2026"
},
{
"year": "2028"
},
{
"year": "2030"
},
{
"year": "2036"
}
]

我想搜索2022到2025之间的值。

为此,我编写了如下代码:
db.collection.find({
$expr: {
$gt: [
{
$toInt: "$year"
},
2022
],
$lte: [
{
$toInt: "$year"
},
2025
]
}
})

但是,这个错误发生了。

query failed: (Location15983)表示表达式的对象必须只有一个字段:{$gt: [{$toInt: "$year"}, 2022.0], $lte: [{$toInt: "$year"}, 2015 .0]}

你能告诉我这个问题的解决方法吗?另外,我在这个环境中对它进行了测试。蒙戈操场

您错过了$and操作符。并分别用{}包裹$gte$lte

db.collection.find({
$expr: {
$and: [
{
$gt: [
{
$toInt: "$year"
},
2022
]
},
{
$lte: [
{
$toInt: "$year"
},
2025
]
}
]
}
})

Demo @ Mongo Playground

最新更新