当前位置: 首页 > 知识库问答 >
问题:

按查询范围过滤mongoDB的问题

史劲
2023-03-14

我对mongodb有意见。有人能解释一下为什么这样做(给出了一些结果):

db.getCollection('test').find({"reportedOn" : { "$gte" :    ISODate("2019-03-01T01:20:00"), "$lt" : ISODate("2019-04-01T02:00:00") } });

这不起作用(返回零):

db.getCollection('test').find({"reportedOn" : { "$gte" : { "$date" : 1551398400000 }, "$lt" : { "$date" : 1554073200000 } } });

非常感谢。

共有2个答案

钮巴英
2023-03-14

尝试以下查询

{ "$date" : { "$numberLong" : "<dateAsMilliseconds>" } }

如MongoDB文档中所述,而不是仅与$日期进行比较。链接

佟云
2023-03-14

您可能需要检查此类相关主题,以了解为什么您实际上不能在查询中直接使用epoch时间。

以下是查询日期的有趣部分:

根据mongo Shell中的数据类型,两者都应等效:

mongo db提供了各种方法来返回日期,可以是字符串或日期对象:

  • 方法,该方法以字符串形式返回当前日期

并且使用ISODate仍然应该返回一个Date对象。

{"$date":"ISO-8601 string"}可以在需要严格的JSON表示时使用。

因此,您可能需要检查所有ISO-8601可用的格式,并根据预期的格式相应地更新代码,以使其按预期工作。

 类似资料:
  • 问题内容: 我想查询日期范围内的elasticsearch文档。我现在有两个选择,两个都适合我。已经测试了他们两个。1.范围查询2.范围过滤器 由于我现在的数据集很小,因此无法测试它们的性能。两者有什么区别?哪个会导致更快地检索文档和更快地响应? 问题答案: 查询和过滤器之间的主要区别在于评分。查询将返回每个文档具有相对排名得分的文档。过滤器没有。这种差异使过滤器更快,有两个原因。首先,它不会产生

  • 问题内容: 我在一个模型中有一个领域,例如: 现在,我需要按日期范围过滤对象。 如何过滤日期在和之间的所有对象? 问题答案: 用 或者,如果你只是想按月过滤:

  • 问题内容: 我正在尝试获取IP范围查询以处理一组文档,但是没有任何结果。 映射(我已经尝试了和): 数据看起来像这样(许多实例的值都不同) 现在,我去看了官方的ES文档,但是没有IP范围示例,但是我在Git上找到了一个不起作用的示例。它看起来如下: 当我用手指指住字段和地址时,上面的方法引发了一些令人鼓舞的解析错误,但最终没有返回结果。 我还尝试了标准范围语法: 这也没有返回结果。如何查询一系列I

  • 问题内容: 我在一个模型中有一个领域,例如: 现在,我需要按日期范围过滤对象。 如何过滤日期在1-Jan-2019和之间的所有对象31-Jan-2019? 问题答案: 采用 或者,如果你只是想按月过滤:

  • 我需要帮助查询与日期范围的长收集。请参阅下面的示例文档。我想用日期范围查询startTime字段。

  • 可以对模型的查询和写入操作进行封装,例如: <?php namespace app\index\model; use think\Model; class User extends Model { public function scopeThinkphp($query) { $query->where('name','thinkphp')->field('i