Mongodb搜索查询是否可以忽略非字母数字字符?

r7xajy2e  于 2022-11-22  发布在  Go
关注(0)|答案(1)|浏览(148)

例如,我的数据包括:

[
   {username: "velikiye.lucky 09", region: "Hamburg"},
   {username: "Roger. blue", region: "Hamburg"},
]

如果我输入查询以搜索“roger blue”(请注意,我在查询中不使用点字符)
如何在mongoDB中获取{username: "roger. blue", region: "Hamburg"}?目前我必须从数据库中加载所有数据,删除其中所有的非字母数字字符,将其小写,然后搜索所请求的用户名。

guykilcj

guykilcj1#

您应该像这样使用regex-match:

db.collection.find({
  username: {
    $regex: "(.*)roger(.*)blue(.*)",
    $options: "i"
  }
})

Playground link.
这里,(.*)将忽略任何字符。如果您只想忽略非字母数字字符,那么就像您在注解中提到的,试试这个:

db.collection.find({
  username: {
    $regex: "[^a-zA-Z0-9]*roger[^a-zA-Z0-9]*blue[^a-zA-Z0-9]*",
    $options: "i"
  }
})

Playground link.

相关问题