Mongodb中的部分字符串匹配

Jam*_*mie 5 regex mongodb

假设我有一堆这样的 mongodb 记录,它们都是字符串:

{myRecord:'foobarbazfoobaz'}
{myRecord:'bazbarfoobarbaz'}
{myRecord:'foobarfoofoobaz'}
{myRecord:'bazbarbazbazbar'}
Run Code Online (Sandbox Code Playgroud)

我需要能够以两种方式进行部分字符串匹配:

1) 我想匹配 'foobar' 所以它返回:

'foobarbazfoobaz'
'foobarfoofoobaz'
Run Code Online (Sandbox Code Playgroud)

请注意,这里的 'foobar' 是一个部分字符串,它与字符串开头的任何记录相匹配。'foobar' 是否出现在字符串的后面并不重要。只要 'foobar' 的前六个字符与记录的前六个字符匹配,我就想取回它。

2)我需要能够匹配 'baz%%%baz' 所以它返回:

bazbarbazbazbar
Run Code Online (Sandbox Code Playgroud)

这里 'baz%%%baz' 匹配任何记录的前三个字符,忽略接下来的三个字符,然后匹配最后三个字符。同样,这个模式是否出现在字符串的后面并不重要,我只是对是否可以从字符串的开头匹配它感兴趣。

我认为有某种 mongo regex 可以做到这一点(希望如此),但在 regex 方面我很糟糕。任何帮助将不胜感激。

这适用于用户在时间线上搜索事件序列的 Web 应用程序,他们总是必须从头开始搜索,但如果他们愿意,可以在搜索中留空。

Roh*_*ain 10

您可以尝试 $regex 运算符

1)我想匹配'foobar'

db.collection.find({"myRecord":{"$regex":"^foobar*"}})

我需要能够匹配“baz%%%baz”

db.collection.find({"myRecord":{"$regex":"^baz.{3}baz"}})

希望它会有所帮助