У меня есть запрос кода $gte
дата, он отлично работает.
cityCollection.aggregate([
{
"$project": {
theater: true,
movie: {
$filter: {
input: {
$map: {
input: "$movie",
as: "movie",
in: {
cnName: "$$movie.cnName",
enName: "$$movie.enName",
releasedTime: {
$filter: {
input: "$$movie.releasedTime",
as: "movie",
cond: { $and:{
$gte: [ "$$movie", new Date(`${today} 20:00:00.000Z`) ]
}}
}
}
}
}
},
as: "movie",
cond: "$$movie"
}
}
}
}
])
.then(drivers => res.send(drivers))
.catch(next);
Теперь я хочу сделать запрос между двумя датами, я пытаюсь добавить $lte
в свой код следующим образом:
releasedTime: {
$filter: {
input: "$$movie.releasedTime",
as: "movie",
cond: {
$gte: [ "$$movie", new Date(`${today} 20:00:00.000Z`) ],
$lte: [ "$$movie", new Date(`${today} 22:00:00.000Z`) ]
}
}
}
Но я получаю ошибку:
{
"error": "An object representing an expression must have exactly one field: { $gte: [ \"$$movie\", new Date(1526328000000) ], $lte: [ \"$$movie\", new Date(1526335200000) ] }"
}
Я ищу какое-то решение, найдите $and
, поэтому я пытаюсь добавить $and
в свой код следующим образом:
releasedTime: {
$filter: {
input: "$$movie.releasedTime",
as: "movie",
cond: { $and:{
$gte: [ "$$movie", new Date(`${today} 20:00:00.000Z`) ],
$lte: [ "$$movie", new Date(`${today} 22:00:00.000Z`) ]
}}
}
}
Это все еще показывает ту же ошибку, я понятия не имею, чтошаг, если я попробую.
Любая помощь будет оценена.Заранее спасибо.