如何获取mongo shell中最近三个月创建的所有文档

时间:2018-03-19 16:57:38

标签: mongodb mongodb-query mongo-shell

我想查找过去三个月内创建的所有文档(仅在3个月内,而不是旧版本)。

示例文件:

因为我觉得它会更可靠。但如果您觉得它安全,那么您也可以使用ce字段来指导我。

提前致谢

1 个答案:

答案 0 :(得分:1)

如果我核心理解您的问题,那么您选择的比较字段(ce)包含自纪元以来的数量。如果是这样,那么您无法直接将其与Javascript Date值进行比较。

相反,您必须将Javascript Date对象的time值转换为秒数,然后与该值进行比较。

例如:

var threeMonthsAgo = new Date();
threeMonthsAgo.setMonth(threeMonthsAgo.getMonth() - 3);
var threeMonthsAgoInSeconds = threeMonthsAgo.getTime() / 1000
db.collection.find({ 
    ce: { $gte: threeMonthsAgoInSeconds } 
})

这种毫秒到秒的转换会受到一些不准确的影响,如果这种不准确性是不可接受的,那么我认为解决方案是将ce存储为自纪元以来毫秒的数量。

如果ce存储了millis数,则可以直接将其与计算出的“3个月前”Javascript日期的值进行比较。

但是,上面的示例要求您将ce转换为毫秒。我所说的就是将秒值与从millis导出的计算值进行比较会引入一些最小的不准确性。这可能在您的用例中无关紧要,但如果确实如此,那么解决它的唯一方法就是比较像millis这样的毫秒数。