查看此文档:
{
"creation_date" : ISODate("2015-02-10T03:00:00.000Z"),
"days_of_validity": 10
}
我正在尝试查询所有文档
"creation_date" < today - "days_of_validity"
这是我迄今为止最好的努力:
docs.find({"creation_date":
{$lt: new Date().setDate(new Date().getDate() - days_of_validity)}})
问题是,显然我不能将 js 函数与 mongo 字段混合在一起。
关于如何解决这个问题有什么想法吗?
最佳答案
您好,我尝试了更多计算,希望这会对您有所帮助
db.collectionName.aggregate({
"$project": {
"crationTimestamp": {
"$subtract": [{
"$divide": [{
"$subtract": ["$creation_date", new Date("1970-01-01")]
}, 1]
}, {
"$mod": [{
"$divide": [{
"$subtract": ["$creation_date", new Date("1970-01-01")]
}, 1]
}, 1]
}]
},
"days_of_validity": "$days_of_validity",
"todayTimeStamp": {
"$subtract": [new Date().getTime(), 0]
},
"creation_date": "$creation_date"
}
}, {
"$project": {
"dayDiff": {
"$multiply": ["$days_of_validity", 24, 60, 60, 1000]
},
"todayTimeStamp": "$todayTimeStamp",
"crationTimestamp": "$crationTimestamp",
"days_of_validity": "$days_of_validity",
"creation_date": "$creation_date"
}
}, {
"$project": {
"todayAndDaysDiff": {
"$subtract": ["$todayTimeStamp", "$dayDiff"]
},
"crationTimestamp": "$crationTimestamp",
"days_of_validity": "$days_of_validity",
"creation_date": "$creation_date"
}
}, {
"$project": {
"finalDiff": {
"$subtract": ["$crationTimestamp", "$todayAndDaysDiff"]
},
"days_of_validity": "$days_of_validity",
"creation_date": "$creation_date"
}
}, {
"$match": {
"finalDiff": {
"$lt": 0
}
}
}, {
"$project": {
"days_of_validity": "$days_of_validity",
"creation_date": "$creation_date"
}
})
关于javascript - 查询 Mongodb 时混合字段和 js 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28585918/