Есть ли способ использовать регулярные выражения над массивом строк в $ фильтра (агрегация)
В настоящее время использую это.find({"strings": {"$elemMatch": {"$in": [/test/si]}}})
найти строку в массиве "strings". Теперь мне также нужно искать эту строку ЗДЕСЬ
.aggregate([
{
$match: {"_id" : ObjectId("5c5c59c689c4cf027b382999") }
},
{ $project: {
data: {
$filter: {
input: '$data',
as: 'item',
cond: {
---------------------------------ЗДЕСЬ
}
}
}
}}
])
Я уже пробовал много подобных вещей, например:
.aggregate([ {
$match:
{"_id" : ObjectId("5c5c59c689c4cf027b382999") }
},
{ $project: {
data: {
$filter: {
input: '$data',
as: 'item',
cond: { $in: [/test/si, "$$item.strings"] }
}
}
}}
])
Я сейчас не могу придумать, как это сделать. Есть ли способ сделать это в версии 3.6?
если вы можете помочь в любом случае: спасибо
привет HM
0 ответов
Я сделал обходной путь:
"$ filter": {"input": "$ data", "as": "item", "cond": {"$ lt": {-1, {"$ indexOfBytes": ["$$ item.searchString "," text "]}}}}
но это работает очень плохо без регулярных выражений + я не могу сопоставить строку []....
PS: все еще в поисках помощи, это действительно важно!!