有没有办法在$ filter(聚合)中的字符串数组上使用正则表达式

时间:2019-02-07 16:55:18

标签: mongodb mongodb-3.6

当前正在使用 .find({"strings": {"$elemMatch": {"$in": [/test/si]}}}) 在“字符串”数组中查找字符串。现在,我还需要搜索此字符串 HERE

.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版中有什么方法可以做到这一点?

如果您能以任何方式提供帮助:谢谢

问候H.M。

1 个答案:

答案 0 :(得分:0)

我做了一个解决方法:

“ $ filter”:{                     “ input”:“ $ data”,                     “ as”:“ item”,                     “条件”: {                         “ $ lt”:{-1,{“ $ indexOfBytes”:[“ $$ item.searchString”,“ text”]}}}}

但是如果没有正则表达式,这真的很糟糕 +我无法匹配字符串[] ....

PS:仍在寻求帮助,这真的很重要!!