创建一个依赖于当前时间的 mongo 视图

Posted

技术标签:

【中文标题】创建一个依赖于当前时间的 mongo 视图【英文标题】:Creating a mongo view that depends on the current time 【发布时间】:2018-07-15 12:30:49 【问题描述】:

我有一个包含日期字段的集合,我想创建一个按当前日期过滤所有文档的 mongo 视图。例如,我希望我的视图包含过去 7 天的所有文档。

我有一个使用聚合管道创建视图的 javascript 脚本。我用javascript方法-new Date()写了最近7天的情况:


  "$lt": [
     "$subtract": [new Date(), "$DateOfDocument"], // difference in milliseconds
      1000 * 60 * 60 * 24 * 7              // 7 days in milliseconds
  ]

但是当我执行创建视图的脚本时,mongo 会计算“new Date()”然后创建视图,“new Date()”的结果是 ISODate。 现在聚合管道会根据我上次执行脚本的时间来计算视图,而不是实际的当前日期。


  "$lt": [
      "$subtract": [ISODate("2018-02-05T06:52:32.10+0000"), "$DateOfDocument"],
      604800000
  ]

有没有办法让视图按当前日期过滤?当前日期的任何聚合方法,例如 oracle 的 'sysdate'?我不想在每次想读取视图时都执行重新创建视图的脚本。

【问题讨论】:

【参考方案1】:

看起来这个功能正在为 MongoDB 3.7 开发。 https://jira.mongodb.org/browse/SERVER-23656

【讨论】:

现在列为 4.1 的必需修复;希望这次能添加!

以上是关于创建一个依赖于当前时间的 mongo 视图的主要内容,如果未能解决你的问题,请参考以下文章

获取相对于当前方向的视图框架大小

在mongo中如何通过总记录获取表中记录的当前位置进行分页?

使计算的 Vue 属性依赖于当前时间?

如何将默认时间设置为当前时间 mongo 模式?

如何旋转类似于照片应用程序的 UICollectionView 并保持当前视图居中?

在 mongo 聚合中使用当前文档键