2015-10-04 39 views
2

全字匹配我想搜索结果MongoDB中如以下情形。的正则表达式MongoDB中

我有一个像Hello World, I am here.

我的查询数据是:

{"$or": [{"data.title": {"$regex": search}}]}; //search = Hello 

所以我用正则表达式$搜索它。但问题是,如果我键入搜索= H,然后再返回其数据

我要上唯一的依据完整的单词进行搜索。 (例如:你好或世界)不是字符的基础上(例如:H或e)

+0

您可以验证长度在进行查询之前,避免单个字符搜索。 如果你不想阻止单个字符搜索,那么你的期望输出是什么,空集? –

+0

我的声明可以包含单个字符词,也就像“我是你的朋友”,因此用户也可以通过“我”搜索。但它应该是一个句子的完整的单词而不是不完整的单词或字符,例如:而不是“朋友”你不能搜索“f”或“星期五”它应该只搜索“朋友” – Tabish

+0

是的,你有点。 –

回答

5

可以使用\ B(字边界)运算符,如:

{"$or": [{"data.title": {"$regex": /\bHello\b/i}}]} 

这样,搜索为“/ \ bH \ b /”将不匹配“你好”。

否则,使用$文本索引你的标题字段,然后做了$文本搜索:

{"$or": [{$text:{$search:"Hello"}}]} 

有关文本搜索的更多信息,请查看文档:http://docs.mongodb.org/manual/administration/indexes-text/