2012-10-05 89 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'一样,没有必要使用这些斜杠 –