如何在mongodb中搜索与名字和姓氏完全或部分匹配? 我试图用这个,如何在mongodb中搜索与名和姓的完全或部分匹配
{"name":{ $regex: str, $options: 'i'}}
但它仅用于字符串的全场比赛。 我可以使用正则表达式进行部分匹配吗?
如何在mongodb中搜索与名字和姓氏完全或部分匹配? 我试图用这个,如何在mongodb中搜索与名和姓的完全或部分匹配
{"name":{ $regex: str, $options: 'i'}}
但它仅用于字符串的全场比赛。 我可以使用正则表达式进行部分匹配吗?
对于这种类型的搜索更好的创造文本索引。 mongo shell命令为名称字段创建text index。
db.colectionName.createIndex({ name: "text" });
,那么你可以搜索使用$text
和$search
var text = 'John Test''
db.collectionName.find({ $text: { $search: text } });
对于这个查询,你会得到,如果name
包含约翰或测试这是不区分大小写
我试过了。没有错误。我搜索后没有显示任何列表。 – JMA
你是否创建了'文本索引',并且可以显示你已经尝试过的代码? @JohnArellano –
我必须为我的项目做到这一点,这是如何工作的? {"name":new RegExp('^'+name, 'i')}
您可能需要编码字符串第一str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
您首先对字符串进行编码的含义是什么? – JMA
@JohnArellano转义正则表达式字符,否则用'*'或'.'等正则表达符输入将被解析为正则表达式。 – ECMAScript
试试这个
{'name': {'$regex': '.*str.*', $options: 'i'}}
我已经对类似问题here作出了回应,结合文本inde x和正则表达式模式使它很好地工作。请注意,文本索引正在按条款进行搜索,因此如果您尝试通过提供pad
来搜索padavan
,则无法获得您期望的只有text
索引。
你用来搜索的正则表达式是什么? – str
str是一个名字“John Test” – JMA
'str'应该是一个正则表达式,而不是实际的字符串。 MongoDB使用Perl兼容的正则表达式。请参考http://perldoc.perl.org/perlre.html创建满足您需求的正则表达式 – RaR