Env:
MongoDB (4.0.6)
起初,我使用正则表达式搜索是这样的:
keyword = new RegExp(keyword, 'img');
query.$or = [
{ campaignTitle: keyword }
];
但主要问题是“关键字”,它只是输入值,如果用户使用特定的符号,它将破坏我的正则表达式... 为了解决此问题,我向集合中添加了文本索引,并开始使用像这样的文本搜索:
//Text Index creation:
db.collection('campaignmodel').createIndex({ campaignTitle: 'text' }, { background: true });
query.$or = [
{ $text: { $search: keyword } }
];
这是有效的,但对用户来说并不舒服,因为搜索无法按单词的一部分找到campaignTitle。
我已经调查了这些文档:
https://docs.mongodb.com/manual/text-search/ (重要的引号-“ $ text将使用空格和大多数标点符号作为分隔符来标记搜索字符串,并对搜索字符串中的所有此类标记执行逻辑或。”
MongoDB Full and Partial Text Search (也许它已经不是实际的信息了)
对于campaignTitle-“ testCompnew Copy 3/14/2019”
现在我可以使用以下输入找到它:
"Copy", "copy", "2019", "3/", "testCompnew"
但不能使用以下输入:
"new", "test", "Comp"
是否可以仅用部分单词按MongoDB
中的文本索引进行搜索?
答案 0 :(得分:0)
Try it using $regex -- refer below link,
点击[此处](https://docs.mongodb.com/manual/reference/operator/query/regex/)!
---------------To use $regex, use one of the following syntaxes:-------------
{ <field>: { $regex: /pattern/, $options: '<options>' } }
{ <field>: { $regex: 'pattern', $options: '<options>' } }
{ <field>: { $regex: /pattern/<options> } }
In MongoDB, you can also use regular expression objects (i.e. /pattern/) to specify regular expressions:
{ <field>: /pattern/<options> }
***As an example: { <text>: /new/ }