我有一些数据,其中年份存储为数字,其他数据点存储为日期。像这样的东西
{
name: "bob",
year_arrived: 2002,
dob: 1995-06-06
}
如果我想获取出生日期在year_arrived减2之前的所有记录(在上面的例子中意味着我想要2000年之前的所有记录),我该怎么写???
逻辑上是
WHERE $year(dob) < (year_arrived-2)
但为了论证起见 - 让我们选择一年中的一天,例如 7 月 1 日 并获取 dob < 2000-07-01
的所有记录我可以做类似的事情
.find({ dob: { $lt: new ISOdate($concat:[(year_arrived-2),'-07-01']}) } })
我已经尝试过 - 但没有运气
最佳答案
假设dob
类型为Date
;
db.coll.find({
"$expr": {
"$lt": [ { "$year": "$dob" }, { "$subtract": ["$year_arrived", 2] } ]
}
})
这样就可以了if (extract_year(dob) < (year_arrived - 2))
这正是您想要的。
关于MongoDB 获取某年之前日期的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57282183/