【发布时间】:2017-01-23 16:20:29
【问题描述】:
我在我的 NodeJS 应用程序中使用 MongoDB 本机驱动程序。
我的数据库中有一个shifts 集合需要更新。我的班次集合中的示例文档
{
"_id" : ObjectId("588425105560bd2ba0065fa4"),
"from" : ISODate("2017-01-23T03:20:00.000Z"),
"to" : ISODate("2017-01-23T06:20:00.000Z"),
"jobId" : ObjectId("586efda790541421b0432897"),
"hourlyRate" : 15
}
{
"_id" : ObjectId("588425105560bd2ba0065fa5"),
"from" : ISODate("2017-01-25T03:20:00.000Z"),
"to" : ISODate("2017-01-25T06:20:00.000Z"),
"jobId" : ObjectId("586efda790541421b0432897"),
"hourlyRate" : 15
}
我需要做的是以下 -
更新所有符合条件的文档的hourlyRate:
- 匹配jobId(很简单)
- 如果
from是工作日,则设置hourlyRate= 20 - 如果
from是星期六,则设置hourlyRate= 25 - 如果
from是星期日,则设置hourlyRate= 30
我希望尽可能在单个查询中完成。
到目前为止我的解决方案:
使用 switch case 并使用日期聚合函数中的 $dayOfWeek 确定日期类型。但是,我无法将 switch 与 updateMany 结合使用。
任何帮助将不胜感激。
【问题讨论】:
标签: node.js mongodb switch-statement mongodb-query aggregation-framework