有一个包含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