#mongodb
Вопрос:
Я хочу выполнить агрегацию MongoDB, которая сначала совпадает с некоторыми значениями, а затем группирует их. Но поле, которое должно быть сопоставлено, имеет значения в базе данных, в некоторых из которых есть начальные и конечные пробелы. Я хочу сначала обрезать, а затем сопоставить их. Как мне это сделать?
async AggregateTypes(_, { retailer_type }) {
const matchCond = {};
if(retailer_type) matchCond.cidm_retailer_type = {$in: retailer_type}
res = await collection.aggregate([
{
$match: matchCond
},
]);
}
Ответ №1:
Вы можете попробовать оператор $trim в $expr
условии соответствия выражений,
if(retailer_type) {
matchCond = {
$expr: {
$in: [
{ $trim: { input: "$cidm_retailer_type" } },
retailer_type
]
}
}
}
Комментарии:
1. Могу ли я сопоставить их с другими совпадениями, которые также используют оператор $in?
2. да, вы можете, но для такого типа случаев для прямого соответствия вы можете поставить условие за пределами $expr.. если я ошибаюсь, пожалуйста, покажите какой-нибудь пример, который даст более точное решение..