我在写一份申请。我需要从那里得到在某个日期范围内创建的语句。滤波器gte
和lte
适用于此。但是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
}]
使用它我会捕获一个错误(* 参数必须是聚合管道操作符 *)。
我尝试了括号{}
和[]
的不同组合,但我认为我的错误在于查询结构。
谢谢你,谢谢
1条答案
按热度按时间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}]'
谢谢你,谢谢