2015-10-04 30 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/