MongoDB 获取某年之前日期的记录

标签 mongodb

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

{
    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/

相关文章:

mongodb - 了解 Golang 上下文超时

database - 使用部分多键唯一索引时出现 E11000 (DuplicateKey) 错误

javascript - Mongoose 在两个时间范围之间选择查询

linux - AWS ec2 redhat linux 上的 mongodb

javascript - 如何查询某个字段值最高的文档

mongodb - Mongo 查询在 mongo shell 中有效,但在 bash mongo --eval 中无效?

mongodb - 为什么 mongodb 的成员不断恢复?

MongoDB - 如何从嵌套数组中的元素中删除字段?

java - MongoDB 等同于使用 Java Driver 的 SQL 查询?

java - Mongo - 忽略属性被持久化