mongodb RegEx returns 模式中一个字母时的所有记录
mogodb RegEx returns all records when one letter in pattern
我在 mongodb 中有一个包含邮件接收者姓名的集合(RDBMS 中的表)。
名称可以包含普通英文字符或日文字符或两者的组合。
我正在使用 RegExp
查找与我传递的模式匹配的名称,下面是代码
db.user_logs.find({ "recipientName": new RegExp(".*漢字*", "i") })
此returns所有包含“汉字”的所有记录在名称
中的任意位置
但是当我使用
db.user_logs.find({ "recipientName": new RegExp(".*漢*", "i") })
returns全部记录是否包含"汉"
我的要求是只需要那些"汉"在任意位置存在的记录
英文字符也是如此。
我可能是错的,但我认为你应该将最后一个 * 更改为 +
*
表示0个或多个匹配,所以它是可选的。
db.user_logs.find({ "recipientName": new RegExp(".*漢.*", "i") })
or
db.user_logs.find({ "recipientName": new RegExp(".*漢+", "i") })
要检查字符1的特定序列是否出现在名称中,正则表达式可以很简单:
db.user_logs.find({ "recipientName": new RegExp("漢字", "i") })
db.user_logs.find({ "recipientName": new RegExp("漢", "i" })
1 如果字符串中包含元字符(在正则表达式中具有特殊含义的字符),则需要对其进行转义。
i
标志对于中文和日文字符是多余的,但我将其保留在那里以防您需要使用拉丁搜索字符串。
如果正则表达式是固定的,也可以选择使用文字正则表达式:
db.user_logs.find({ "recipientName": /漢字/ })
db.user_logs.find({ "recipientName": /漢/ })
i
此处已删除标记,因为您不需要它。
我在 mongodb 中有一个包含邮件接收者姓名的集合(RDBMS 中的表)。
名称可以包含普通英文字符或日文字符或两者的组合。
我正在使用 RegExp
查找与我传递的模式匹配的名称,下面是代码
db.user_logs.find({ "recipientName": new RegExp(".*漢字*", "i") })
此returns所有包含“汉字”的所有记录在名称
中的任意位置但是当我使用
db.user_logs.find({ "recipientName": new RegExp(".*漢*", "i") })
returns全部记录是否包含"汉"
我的要求是只需要那些"汉"在任意位置存在的记录
英文字符也是如此。
我可能是错的,但我认为你应该将最后一个 * 更改为 +
*
表示0个或多个匹配,所以它是可选的。
db.user_logs.find({ "recipientName": new RegExp(".*漢.*", "i") })
or
db.user_logs.find({ "recipientName": new RegExp(".*漢+", "i") })
要检查字符1的特定序列是否出现在名称中,正则表达式可以很简单:
db.user_logs.find({ "recipientName": new RegExp("漢字", "i") })
db.user_logs.find({ "recipientName": new RegExp("漢", "i" })
1 如果字符串中包含元字符(在正则表达式中具有特殊含义的字符),则需要对其进行转义。
i
标志对于中文和日文字符是多余的,但我将其保留在那里以防您需要使用拉丁搜索字符串。
如果正则表达式是固定的,也可以选择使用文字正则表达式:
db.user_logs.find({ "recipientName": /漢字/ })
db.user_logs.find({ "recipientName": /漢/ })
i
此处已删除标记,因为您不需要它。