存在一个模式,
const schemaDB = mongoose.Schema({
product:{
type: String,
},
DateOfInstallation: {
type: Date
},
standardWarranty: {
type: Number
},
extendedWarranty: {
type: Number
},
AMC:{
type: Number
}
})
我需要得到所有产品的清单,将到期1个月内从今天开始。
total_years_to_Add = standardWarranty + extendedWarranty + AMC
date_exp = DateOfInstallation + addYears(total_years_to_Add)
date_diff = date_exp - today's Date
如果date_diff小于月份,则返回数据
请帮助调试给定的mongodb聚合查询(在mongoose中实现)
const datas = await DBModel.aggregate([
{
$match: {
total: { $add: ['$standardWarranty','$extendedWarranty','$AMC']},
newdate: { $dateAdd: {
startDate: '$DateOfInstallation',
unit: "year",
amount: "$$total"
}},
$lte: [{$dateDiff:{
startDate: "$$newdate",
endDate: new Date(),
unit: "month"
}},1]
}},
{ $project:{
"DateOfInstallation":1, "standardWarranty":1, "extendedWarranty":1,"AMC":1
}},
{$sort:{
"DateOfInstallation": 1
}}
])
我知道$add不能在$match中使用,有人可以帮助查询相同的内容吗
1条答案
按热度按时间1qczuiv01#
您的方向是正确的。但是您必须使用
$expr
:或者更容易理解一点: