2012-10-05 126 views
1

我試圖用spring來查詢MongoDB,但是我無法讓我的正則表達式工作。Spring MongoDB查詢正則表達式

我在MongoDB中使用了一個MongoDB中的樹作爲物化路徑(http://www.mongodb.org/display/DOCS/Trees+in+MongoDB)。

在shell查詢

db.categories.find({path:/^\w+,$/}) 

工作正常,找到第一個逗號之前的路徑。

例:{「路徑」:「一,」}得到返回而不是{「路徑:‘A,B’}。這是我想要的

我如何在同一個查詢?春天 我已經試過:

new Query(Criteria.where("path").regex("/^\\w+,$/")) 

但這不起作用

謝謝

+0

我不知道該彈簧MongoDB的東西。但是,我知道您需要在Java正則表達式中雙重轉義反斜槓。此外,您不需要開始和結束斜槓:.regex(「^ \\\\ w +,$」)應該可以工作。 –

回答

2

我解決我的問題

query = new Query(Criteria.where("path").regex("^([A-Z]|[a-z])+,$")); 

雖然\ w代表「任何單詞字符」,通常意味着字母數字,我只需要字母字符。

以後我可以扔[0-9]\ _具有相同的\ W

如果有人能解釋一下如何\ W工作,我會很感激:)

+0

在你的第一個例子中,你已經使用了'/'int來開始一個結束,而在第二個例子中你沒有使用'/'字符。 – Alper

+0

就像問題評論中提到的'tamas rev'一樣,沒有必要使用這些斜槓 –