我是 MongoDB 新手。我想使用匹配来仅获取过去 2 年之间的记录。有没有一种方法可以在不进行硬编码的情况下做到这一点?
例如,今年是 2023 年。但是我的收藏记录的最新年份是 2021 年。我想要获取我的收藏最近 2 年的记录,而不是当前年份。因此范围将是 2019-2021 年,而不是2021-2023 年。
有没有一种方法可以做到这一点,而无需将年份硬编码为字符串?
我想获取此信息,以便在下一阶段使用它
目前我有这个,硬编码的
{
$match: {
fechaOrden: {
$gte: ISODate("2018-01-01"),
$lt: ISODate("2020-02-01"),
},
},
},
] ``` Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
可以使用
$setWindowFields来抓取文档近2年的记录。然后,使用$sort+$limit查找整个集合中最新的记录并返回关联的最近 2 年的记录。db.collection.aggregate([ // compute latest records in 2 years { $setWindowFields: { sortBy: { dt: 1 }, output: { recentRecords: { $push: "$$ROOT", window: { range: [ -2, 0 ], unit: "year" } } } } }, // find latest records in whole collection { "$sort": { dt: -1 } }, { $limit: 1 }, // cosmetics { "$unwind": "$recentRecords" }, { "$replaceRoot": { "newRoot": "$recentRecords" } } ])Mongo 游乐场