mongodb - 日期范围内带有objectId的mongodb指南针查询
问题描述
我正在尝试_id
使用指南针对字段执行日期范围查询。我已经使用以下过滤器尝试了在这里找到的内容:
{_id: { $gte: ObjectId.fromDate(new Date('2019-01-01')) } }
我错过了什么?我想从某个日期(在此示例中为 2019 年 1 月 1 日至今)获取所有文档的列表。不幸的是,文档字段中没有时间戳,所以我需要从对象 id 中提取它。
解决方案
您需要将日期对象传递给ObjectId.fromDate
,而不是字符串。试试这个:
ObjectId.fromDate(new Date('2019-01-01'))
此功能仅在 shell 中有效,在驱动程序中不存在。
评论后编辑:
这是一个也适用于 Compass 的解决方案:
{
$expr: {
$gte: [
{"$toDate":"$_id"},
ISODate("2021-01-01T00:00:00.000Z")
]
}
}
但是请记住,它需要4.0+mongo
的版本。您可以在此处查看文档。
另外,请查看此相关主题:我可以按日期查询 MongoDB ObjectId 吗?
它不是关于Compass
,但它提供了ObjectId
从日期生成 s 的解决方案,而不依赖于ObjectId.fromDate()
.
推荐阅读
- azure - 在通过管道触发的 Azure VM 上运行自动化 UI 测试
- c++ - 密码显示双字母c ++的问题
- javascript - 捆绑失败意外的令牌反应原生
- javascript - 使用画外音增加 `role="spinbutton"`
- reactjs - 用打字稿反应useState(仅一个变量)
- python - 如何从 json 对象中检索特定数据并添加到新数组中
- wordpress - 如何减少 wordpress 网站中的 ttfb 时间?
- java - Maven 在编译阶段连接文本文件
- python-3.x - 使用 Python 更改 YAML 中的特定变量
- python - 如何在 scapy 中构造 CIP 列表身份请求?