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