2012-05-09 22 views
10

về cơ bản đây là câu hỏi của tôi: How to query MongoDB with "like"?Query cú pháp trong MongoDB cho sql "like" - tôi đang sử dụng java

nhưng tôi đoán tất cả các câu trả lời ở đây được áp dụng khi bạn đang sử dụng MongoDB vỏ dòng lệnh, vì vậy những gì tương đương với db.users.find({"name": /.*m.*/}) khi chúng tôi đang sử dụng java.

ở đây là làm thế nào tôi đang cố gắng để làm

DBCollection coll = MongoDBUtil.getDB().getCollection("post_details");  
    BasicDBObject query = new BasicDBObject();  
    query.put("price", new BasicDBObject("$gt", 5).append("$lt", 8)); 
/*what should i write instead of this line*/ 
      query.put("title", "/.*m.*/"); 

    DBCursor cur = coll.find(query); 

Trả lời

12

Đối với vấn đề này, bạn nên sử dụng một regex như trong ví dụ này:

BasicDBObject query = new BasicDBObject(); 
Pattern regex = Pattern.compile("the title you are looking for"); // should be m in your case 
query.put("title", regex); 
+0

thnx. u có nghĩa là tôi nên viết: Pattern regex = Pattern.compile ("/.* m. * /"); nếu tôi muốn tìm tựa đề chứa "m"? – MoienGK

+2

@dave bạn có thể chỉ cần viết Pattern regex = Pattern.compile ("m"); – sebastian

+0

+1 - lưu ý rằng MongoDB sẽ "làm điều đúng" và thực hiện tìm kiếm hiệu quả với regex nếu có thể (về cơ bản khi regex có ký tự đại diện chỉ ở cuối) –

0

Lấy ví dụ ở trên làm tham chiếu, nhưng sử dụng lớp Bộ lọc:

Pattern regex = Pattern.compile("title you look for"); 
Bson filter = Filters.eq("nombre", regex)); 
Các vấn đề liên quan