如何为Learning Locker Aggregation API编写gte过滤器(参数必须是聚合管道运算符)

问题描述 投票:0回答:1

我正在写一份 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
}]

我发现了一个错误(参数必须是聚合管道运算符)。

我尝试了括号

{}
[]
的不同组合,但我认为我的错误在于查询构造。

谢谢!

php laravel mongodb-query xapi learning-locker
1个回答
0
投票

评论中的用户在寻找解决方案方面提供了很多帮助(不幸的是我找不到他的昵称)。

引用:

您可以将字符串值与日期字段进行比较。确保您一致地使用数据类型。另外,

$limit
应该是一个单独的阶段。看看this是否对您的案例有帮助 – ray

$limit
确实需要单独进行分期。 具体来说,在我的例子中,开始抛出 502 错误,这是因为数据库中没有满足过滤器的记录。 (或者其他一些原因)。尽管如此,代码成功地处理了这种查询变体,并向我返回了几条记录。

'管道=[{ “$匹配”:{ “语句.时间戳”:{ “$gte”:“2020-11-30T15:21:52.698Z”, “$lte”:“2020-12-30T15:21:52.698Z” } } }, {"$limit": 5}]'

谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.