我正在写一份 LRS 服务请求。我需要从那里获取在某个日期范围内创建的报表。 过滤器
gte
和 lte
适合于此。但documentation(和this)并没有说明它们应该如何准确地编写。我应该使用 and
还是将它们写在字段中:
"statement.timestamp": {
"$gte": "2022-04-01T00:00:00Z",
"$lte": "2022-05-01T00:00:00:00Z"
}
我也对括号感到困惑。有些示例有
{}
,其他示例有 [{}]
,其他示例只是 []
。
我知道这是 Mongo 的特殊性。
说到蒙戈。在其文档中有一个语法示例:
{ field: { $gte: value } } }
,但我发现了一个错误(参数必须是聚合管道运算符)。
我用这个查询做了一个测试:
pipeline=[{"$limit": 1}]
。一切对我来说都很好。
现在我的查询如下所示:
pipeline=[{
"$match": {
"statement.timestamp": {
"$gte": "2022-04-01T00:00:00:00Z"
},
}, "$limit": 1
}]
我发现了一个错误(参数必须是聚合管道运算符)。
我尝试了括号
{}
和[]
的不同组合,但我认为我的错误在于查询构造。
谢谢!
评论中的用户在寻找解决方案方面提供了很多帮助(不幸的是我找不到他的昵称)。
引用:
您可以将字符串值与日期字段进行比较。确保您一致地使用数据类型。另外,
应该是一个单独的阶段。看看this是否对您的案例有帮助 – ray$limit
$limit
确实需要单独进行分期。
具体来说,在我的例子中,开始抛出 502 错误,这是因为数据库中没有满足过滤器的记录。 (或者其他一些原因)。尽管如此,代码成功地处理了这种查询变体,并向我返回了几条记录。
'管道=[{ “$匹配”:{ “语句.时间戳”:{ “$gte”:“2020-11-30T15:21:52.698Z”, “$lte”:“2020-12-30T15:21:52.698Z” } } }, {"$limit": 5}]'
谢谢!