Mongoose lte方法暂时不起作用



我正在获取保存在数据库中的日期。然后,我正在做一个小日期数学运算,将今天的日期从3减去,这就是给我的日期格式-(DD-MM-YYYY(。以数据库格式保存的日期也相同-(DD-MM-YYYY(。有人能帮我验证那个日期的$lte吗。我没有得到任何DipData的日志。

nodeCron.schedule("* * * * *", async function () {
var DateNow = await moment().subtract(3, "days").format("DD-MM-YYYY");
console.log("Test Date Cron",DateNow);
console.log("-->",new Date(DateNow.format("DD-MM-YYYY")));
let DipData = await userModel.find({}, { LastAppOpenedTime: { $lte : new Date(DateNow.format("DD-MM-YYYY")) }})
console.log("-----DipData ------->", DipData);

});

首先需要确定存储在mongo集合的文档中的日期是字符串格式还是常规日期格式或epoch格式。如果是字符串,查询可能会给出不准确的结果。如果有日期格式或历元格式,您可以很容易地查询您的结果,并得到正确的结果。

  1. 因此,如果LastAppOpenedTime文档密钥中有字符串,则可以在find查询下使用$toDate进行查询
  2. 若键在存储的文档中不是字符串格式,下面的代码将起作用
var DateNow = moment().subtract(3, "days");
const DipData = await userModel.find({ LastAppOpenedTime: { $lte: new Date(DateNow) } });

对于以上两种情况,如果您的查询是准确的形式,比如删除第一个空大括号,那么它就会起作用。

userModel.find({}, { LastAppOpenedTime: { $lte : new Date(DateNow) }})

userModel.find({ LastAppOpenedTime: { $lte : new Date(DateNow) }})

你好,我通过做一些更改来完成这项工作

const DateNow = await moment().subtract(3, "days");
console.log("Test Date Cron", DateNow);
console.log("-->", new Date(DateNow));
const DipData = await userModel.find({ createdAt: { $lte: new Date(DateNow) } });
console.log("-----DipData ------->", DipData);
res.status(200).json({ success: true, message: "Request was successful", DipData });

我注意到您在moment函数的末尾有.format("DD-MM-YYYY"(,但它返回了一个无法用新日期(DateNow(转换的字符串。我在测试时删除了我的,因为当时的反应没有它也很好。

我还更新了您的userModel.find({}, { LastAppOpenedTime: { $lte : new Date(DateNow.format("DD-MM-YYYY")) }})以删除第一个空{}。所以你会有userModel.find({ createdAt: { $lte: new Date(DateNow) } });

最新更新