如何在mongodb中搜索与名字和姓氏完全匹配或部分匹配? 我试过用这个,
{"name":{ $regex: str, $options: 'i'}}
但它仅用于字符串的完全匹配。 我可以使用正则表达式进行部分匹配吗?
答案 0 :(得分:1)
对于此类搜索,最好创建文本索引。 mongo shell命令为名称字段创建text index。
db.colectionName.createIndex( { name: "text" } );
然后您可以使用$text
和$search
var text = 'John Test''
db.collectionName.find({ $text: { $search: text } });
对于此查询,如果name
包含 john 或测试,并且不区分大小写
答案 1 :(得分:0)
我必须为我的项目执行此操作,这对您有何帮助? {"name":new RegExp('^'+name, 'i')}
您可能需要先对字符串str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
答案 2 :(得分:0)
试试这个
{'name': {'$regex': '.*str.*', $options: 'i'}}
答案 3 :(得分:0)
我已回复类似的问题here,结合文本索引和正则表达式模式使其工作得很好。请注意,文字索引是按字词搜索的,因此,如果您尝试通过提供padavan
来搜索pad
,那么您将无法获得您期望只有text
索引的内容。< / p>