如何在mongodb中搜索与名字和姓氏完全或部分匹配的内容

时间:2017-01-02 09:29:30

标签: node.js mongodb meteor

如何在mongodb中搜索与名字和姓氏完全匹配或部分匹配? 我试过用这个,

{"name":{ $regex: str, $options: 'i'}}

但它仅用于字符串的完全匹配。 我可以使用正则表达式进行部分匹配吗?

4 个答案:

答案 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>