#node.js #mongodb #aggregate
#node.js #mongodb #агрегировать
Вопрос:
Как я могу добавить условие if между агрегатной функцией, предполагая, что у меня есть один параметр из запроса «ввод», если у меня есть ввод, я хотел бы, чтобы идентификатор выглядел больше, чем этот идентификатор, если у меня нет ввода, я не буду сопоставлять идентификатор, как я могу достичь этого?
collection.aggregate(
// Pipeline
[
// Stage 1
{
$match: {
"created_at": {$gte: fromDate, $lt: toDate},
"type": {$in : typeArray},
if (input){
"_id": {$gte: ObjectId("blahblahblah")}
}
}
},
{
$lookup: // Equality Match
{
from: "users",
localField: "some_id",
foreignField: "_id",
as: "user"
}
},
{
$sort:
{
"_id": 1
}
},
{
$limit: pageSize
}
])
Ответ №1:
Вы можете использовать так, для условия IF
{ $cond: { если: (логическое выражение), то: (true-case), иначе: (false-case) } }
или
{ $cond: [ (логическое выражение), (истинный регистр), (ложный регистр) ] }
для получения ссылок вы можете ознакомиться с документацией
https://docs.mongodb.com/manual/reference/operator/aggregation/cond/
Комментарии:
1. у меня есть только условие if без else, опять же, если условие исходит из моего ввода, а не из моей базы данных, я хочу сопоставить его только в том случае, если мой ввод имеет значение true
2. тогда у вас может быть условие перед вашим агрегированным запросом