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

в настоящее время использует это .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

1 Ответ

0 голосов
/ 11 марта 2019

я сделал обходной путь:

"$ filter": {"input": "$ data", "as": "item", "cond": {"$ lt": {-1, {"$ indexOfBytes": ["$$ item.searchString", "text"]}}}}

, но это работает очень плохо без регулярных выражений + я не могу сопоставить строку [] ....

PS: Все еще ищите помощи, это действительно важно !!

...