php 如何为Learning Locker聚合API编写gte filter(参数必须是聚合管道运算符)

mklgxw1f  于 2023-09-29  发布在  PHP
关注(0)|答案(1)|浏览(120)

我在写一份申请。我需要从那里得到在某个日期范围内创建的语句。滤波器gtelte适用于此。但是documentation(和this)并没有说明它们应该如何确切地写。我应该使用and还是在字段中写入它们:

"statement.timestamp": {
    "$gte": "2022-04-01T00:00:00Z", 
    "$lte": "2022-05-01T00:00:00:00Z"
}

我也被括号搞糊涂了。有些例子有{},有些有[{}],有些只有[]
我知道这是蒙古人的特点。
关于Mongo在它的文档中有一个 Syntax的例子:{ field: { $gte: value } } },但是我用它捕获了一个错误(* 参数必须是聚合管道操作符 *)。
我用这个查询做了一个测试:pipeline=[{"$limit": 1}] .一切对我来说都很好。
现在我的查询看起来像这样:

pipeline=[{
    "$match": {
        "statement.timestamp": {
            "$gte": "2022-04-01T00:00:00:00Z"
        },
    }, "$limit": 1
}]

使用它我会捕获一个错误(* 参数必须是聚合管道操作符 *)。
我尝试了括号{}[]的不同组合,但我认为我的错误在于查询结构。
谢谢你,谢谢

gdx19jrr

gdx19jrr1#

评论中的用户帮助找到了解决方案(不幸的是,我找不到他的昵称)。
报价:
您可以将字符串值与日期字段进行比较。确保你使用的数据类型是一致的。此外,$limit应该是一个单独的阶段。查看this是否对您的案例有帮助-ray
$limit确实需要放到一个单独的staging中。特别是在我的例子中,502错误开始被抛出,这是由于数据库中没有满足过滤器的记录。(或其他原因)。尽管如此,代码成功地处理了这个查询变体,并返回了几条记录。
'pipeline=[{“$match”:{“statement.timestamp”:{“$gte”:“2020-11-30T15:21:52.698Z”,“$lte”:“2020-12-30T15:21:52.698Z”},{"$limit”:5}]'
谢谢你,谢谢

相关问题