gpt4 book ai didi

node.js - Mongoose:按日期运行计划作业查询

转载 作者:太空宇宙 更新时间:2023-11-03 23:26:40 25 4
gpt4 key购买 nike

我想为医院的病人创建一个预定的工作。患者每月都会收到reg_date通知。

我在预定的作业中使用 new Date().getDate() 在早上 8 点运行,向我的患者发送短信。同时,我一直在使用字符串格式日期将 reg_date 保存在我的 mongoDB 中。这是我的 mongoDB 文档的片段:

{
customer: "John",
reg_date: "2017-02-17T16:39:26.969Z"
}

我一直在寻找解决方案,但结果一无所获,所以我决定发布自己的帖子。这就是我正在尝试做的事情:

customer.find({"reg_date.getDate()" : new Date(2017, 03, 17).getDate()})
.then(function(data) {
for (var key in data.length) {
sendTheSMS(key[data]);
};
});

例如:我正在做的是“我想让每个月 17 日登记的患者并向他们发送短信”。

任何帮助将不胜感激。 :D

最佳答案

对于这种类型的有点复杂的查询,您需要使用聚合方法而不是常规查找方法。

$project 这将帮助您投影字段,这里我们将创建一个新的临时字段 day,其中仅包含 reg_date 的日期。然后我们使用新的字段日进行查询并得到结果。

这个临时字段day永远不会添加到您的架构或模型中,它就像我们在 SQL 中创建的临时 View 一样。

这里我只预测了客户和日期,但请预测结果中所有必需的字段。

function getCustomerList(day, callback){
customer.aggregate([
{
$project:{
"customer": "$customer", //repeat the same for all field you want in result
"reg_date": "$reg_date",
"day":{$dayOfMonth:"$reg_date"} //put day of month in 'day'
}
},
{
$match:{
"day": day //now match the day with the incoming day value
}
},
], function(err, result){
callback(err, result);
})
}

getCustomerList(17, function(err, result){ // call the function like this with date you want
// Process the err & result here
});

结果会是这样的

[{
"_id" : ObjectId("571f2da8ca97eb10163e6e17"),
"customer" : "John",
"reg_date" : ISODate("2016-04-17T08:58:16.414Z"),
"day" : 17
},
{
"_id" : ObjectId("571f2da8ca97eb10163e6e17"),
"customer" : "Prasanth",
"reg_date" : ISODate("2016-04-17T08:58:16.414Z"),
"day" : 17
}]

忽略流程中预计的day字段...

关于node.js - Mongoose:按日期运行计划作业查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43269631/

25 4 0
文章推荐: c# - 多线程应用调试问题
文章推荐: c - 优化 C 中的 vector/矩阵运算?
文章推荐: javascript - 使用 javascript 删除由 Javascript 创建的
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com