У меня есть выражение соответствия в агрегации mongodb. В игре есть 3 поля, но они не всегда содержат данные. Я хочу включить поля в совпадение, если поле не пустое.Как динамически строить запрос mongodb
Это то, что похоже на матч, если все поля имеют данные, но, например, если массив, используемый для studentGradeLevels
, пуст, то я не хочу его включать или я хочу, чтобы запрос по-прежнему возвращал данные, игнорируя пустое параметр.
$match: {
"school._id": "7011",
"studentGradeLevels": { $in: ["09", "10", "11", "12"] },
"contentArea": {
$in: [
"English 1"
]
}
}
Есть ли способ либо динамически строить матч, так что я только включать поля, которые я хочу на основе, если они пусты или нет, или сделать что-то в запросе, так что параметры, которые пусты, игнорируются.
Похоже, это отвечает «что если мой параметр запроса пуст.» Я думаю, что OP хотел бы этого: «Если я запрашиваю для contentArea и schoolGradeLevels, а у кандидата doc оба поля установлены, то попытайтесь сопоставить. Но если, например, schoolGradeLevels НЕ установлен в кандидате, тогда даже не пытайтесь сопоставить это поле, просто попробуйте совместить с contentArea. " –