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

How to get all documents which are created in last three months in mongo shell

我想找到最近三个月内(仅在 3 个月内,而不是更早的)创建的集合中的所有文档。

示例文档:

因为我认为它会更 reliable.But 如果你觉得这样很安全,你也可以指导我使用 ce 文档字段。

提前致谢

如果我正确理解您的问题,那么您选择的比较字段 (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存储了毫秒数,那么它可以直接与计算的“3个月前”Javascript日期的值进行比较。

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