我想查找过去三个月(仅限 3 个月内而不是较旧的文档)创建的所有集合文档。
示例文档 :
因为我认为它会更可靠。但是,如果您觉得这是安全的,您也可以指导我使用文档字段ce
。
提前致谢
如果我完全理解您的问题,那么您选择的比较字段 (ce
) 包含自纪元以来的秒数。如果是这样,那么你不能直接将其与JavascriptDate
值进行比较。
相反,您必须将 JavascriptDate
对象的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 派生的计算值进行比较会引入一些最小的不准确性可能性。这在您的用例中可能无关紧要,但如果确实如此,那么解决它的唯一方法是将 like 与 like 进行比较,即 millis 与 millis。