Я, вероятно, должен добавить комментарий, запрашивающий дополнительную информацию у OP, вместо того, чтобы публиковать ответ, но в духе попытки перевести этот оператор SQL в эквивалентный запрос MongoDB (и среду данных), эти данные:
var r =
[
// IN: Only good one:
{ _id: 0, archived: 0, user_seasons_id: "U1",
date_debut: new ISODate("2020-01-01"), date_fin: new ISODate("2020-01-06") }
// OUT: seasondate is beyond date_fin
,{ _id: 1, archived: 0, user_seasons_id: "U1",
date_debut: new ISODate("2020-01-01"), date_fin: new ISODate("2020-01-03") }
// OUT: Right range, wrong ID.
,{ _id: 2, archived: 0, user_seasons_id: "U99",
date_debut: new ISODate("2020-01-01"), date_fin: new ISODate("2020-01-06") }
// OUT: not archived == 0
,{ _id: 3, archived: 1, user_seasons_id: "U99",
date_debut: new ISODate("2021-01-01"), date_fin: new ISODate("2021-01-03") }
];
обработано этим простым конвейером:
seasondate = new ISODate("2020-01-04");
user = "U1";
c = db.foo.aggregate([
{$match: {
"archived":0
,"user_seasons_id":user
,"date_debut": {"$lt": seasondate}
,"date_fin": {"$gte": seasondate}
}}
]);
даст всего _id:0
.