我有数据,其中一年存储为数字,其他数据点存储为日期。像这样的东西

{
    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']}) } })

我试过了-没有运气

最佳答案

假设dobDate类型;

db.coll.find({
    "$expr": {
        "$lt": [ { "$year": "$dob" }, { "$subtract": ["$year_arrived", 2] } ]
    }
})

这就可以了,这正是你想要的。

关于mongodb - MongoDB获取某一年前的日期记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57282183/

10-12 16:26