我想查找过去三个月内创建的所有文档(仅在3个月内,而不是旧版本)。
示例文件:
因为我觉得它会更可靠。但如果您觉得它安全,那么您也可以使用ce
字段来指导我。
提前致谢
答案 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这样的毫秒数。