java - mongodb按查询范围过滤的问题
问题描述
我在使用 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 } } });
非常感谢。
解决方案
您可能必须检查此类相关主题以了解为什么您实际上不能直接在查询中使用纪元时间。
这是查询 Date 的有趣部分:
根据mongo Shell 中的数据类型,两者都应该是等价的:
mongo db 提供了各种方法来返回日期,无论是作为字符串还是作为 Date 对象:
- Date() 方法,将当前日期作为字符串返回。
- new Date() 构造函数,它使用 ISODate() 包装器返回 Date 对象。
- ISODate() 构造函数,它使用 ISODate() 包装器返回 Date 对象。
并且 usingISODate
仍然应该返回一个 Date 对象。
{"$date": "ISO-8601 string"}
当需要严格的 JSON 表示时可以使用。
因此,您可能需要检查所有 ISO-8601 可用格式,并根据预期格式更新您的代码,以使其按预期工作。
推荐阅读
- android - 如何模拟使用匕首刀柄注入的视图模型进行android测试
- apache-spark - Pyspark org.apache.http.ConnectionClosedException:内容长度分隔的消息正文过早结束
- if-statement - Umbraco 7 - 内容选择器问题的 if 循环
- android - Google Developer 中的客户端 segreto
- spring - 从业者阅读器未启动后的春季批处理
- google-cloud-platform - 使用 gcloud compute scp 传输的文件未显示在目标文件夹中
- javascript - 我还能使用 OrbitControls 吗?
- javascript - 如何将用户 ID 字符串键入用户对象
- python - 环境变量未在 vs 代码中使用
- pandas - 加入/合并熊猫数据帧,其中索引是其他索引的子字符串