2016-05-13 35 views
1

我在DB這三個用戶使用下列按鍵:MongoDB的Java中找到用戶

喬恩 - 111

喬恩 - 222

喬恩 - 333

的代碼我現在寫的只能通過他的密鑰在DB中找到一個用戶。 如何返回所有這些用戶?

public void getMongoDB() { 

    DB db = mongo.getDB("people"); 
    DBCollection table = db.getCollection("users"); 

    BasicDBObject searchQuery = new BasicDBObject(); 
    searchQuery.put("key", "Jon-111"); // what do I do here to return all the 'Jon' users? 

    DBCursor cursor = table.find(searchQuery); 

    int dbSize = cursor.size(); // size is 1 
    while (cursor.hasNext()) { 
     logger.debug(""+cursor.next()+"\n"); 
    }  
    logger.debug("users table"); 

} 

在此先感謝

+0

這將是沿着'「鍵東西線「,」LIKE jon - *''。但是我從來沒有使用過MongoDb,所以它可能取決於MongoDb的細節 – MikeT

+0

@MikeT這是一種非常標準的SQL方法,但是對於Java/Mongo而言,它稍微複雜一些,需要rege x,請參閱下面的一些示例的答案。 –

回答

1

如果你希望你的搜索是「與Jon開始」,嘗試:

searchQuery.put("key", java.util.regex.Pattern.compile("^Jon")); 

您將需要使用正則表達式做這樣的查詢,如在我例。

爲了你的利益的一些例子:

'結束與喬恩:

searchQuery.put("key", java.util.regex.Pattern.compile("Jon$")); 

'包含喬恩:

searchQuery.put("key", java.util.regex.Pattern.compile(".*Jon.*")); 
+0

謝謝工作很好! – user2456977

0

您可以使用正則表達式的值傳遞。類似下面:

searchQuery.put("key", java.util.regex.Pattern.compile("Jon-\\.*"));