我正在尝试获取文档中最近 20 年的所有电影。我正在尝试这样但不起作用。这是我第一次使用 mongoDB,所以我有点迷失,可能从一开始就错了。
` var query1 = { "_id": null, "maxYear": { $max: "$year" } } var fase1 = { $group: query1 }
var query2 = { "_id": null, "minYear": { $subtract: [ "$maxYear" , 20 ] } } var fase2 = { $project: query2 }
var query3 = { "year": { $gte: "$minYear" } } var fase3 = { $match: query3 }
var etapas = [ fase1, fase2, fase3 ] db.movies.aggregate(etapas)`
这是我的数据示例:
/* 1 createdAt:4/12/2023 23:56:33*/ { "_id" : ObjectId("656e59214247fdc6cb90136d"), "title" : "Caught", "year" : 1900, "cast" : [ "Undefined" ], "genres" : [ "Undefined" ] },
期待博士近20年的电影。
如果我正确理解你的问题,你正在尝试获取 2003 年到 2023 年,也就是到现在为止最近 20 年的
year
的文件。
在过滤器查询中,您应该获取当前年份,并用
year
字段减去。过滤结果小于或等于 20 的文档。
db.movies.aggregate([
{
$match: {
$expr: {
$lte: [
{
$subtract: [
{
$year: "$$NOW"
},
"$year"
]
},
20
]
}
}
}
])