0

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

.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

4

1 回答 1

0

我做了一个解决方法:

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

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

于 2019-03-11T14:06:34.980 回答