Есть ли способ использовать регулярные выражения над массивом строк в $ фильтра (агрегация)

В настоящее время использую это.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: все еще в поисках помощи, это действительно важно!!

Другие вопросы по тегам