我是 Mogo 的新手,如果有人能指出我的代码有什么问题,那将对我有很大的帮助。我想在两天之间更新几个月内的分期付款。我的代码是使用pastebin。我正在使用 moment.js 来查找几个月内两个日期之间的差异。 我有两个日期字段成熟日期和制裁日期,并希望将两个日期之间的差异存储到名为 noOfInstallment 的字段中。
router.get("/fix", async (req, res) => {
const data = await Loan.updateMany(
{},
{
$set: {
noOfInstallment: moment(new Date("$maturityDate")).diff(
moment(new Date("$sanctionedDate")),
"months",
true
),
},
}
);
res.send(data);
});
您无法访问本机 JavaScript 中的字段。一种解决方案是这样的:
db.loan.updateMany(
{},
[{
$set: {
noOfInstallment: {
$dateDiff: {
startDate: "$maturityDate",
endDate: "$sanctionedDate",
unit: "month"
}
}
}
}]
);
其他一些注意事项:
moment.js
已弃用,您不应在新项目中使用它。
没有理由
moment(new Date("$maturityDate"))
。我假设 maturityDate
是一个 Date
字段。在已经是 new Date(...)
的值上使用 Date
没有任何意义。
另一种解决方案可能是这个:
db.loan.find({}).forEach( x => {
db.load.updateOne(
{_id: x._id},
{$set: {
noOfInstallment: moment(x.maturityDate).diff(
moment(x.sanctionedDate),
"months",
true
)
} }
);
})
但是
updateMany
应该有更好的表现。