2015-11-02 21 views
5

Mã của tôi cần hỗ trợ bất kỳ truy vấn nào được khách hàng gửi. Khách hàng sẽ gửi truy vấn dưới dạng json. Tôi đã làm điều này bằng cách sử dụng trình điều khiển java mongo mức thấp api bằng cách sử dụng mã sau,
BasicDBObject queryObject = (BasicDBObject) JSON.parse(whereJson.toString());
Vì tôi là người mới trong dữ liệu mùa xuân mongodb, tôi không thể tìm thấy giải pháp tương tự trong các lớp Truy vấn hoặc Tiêu chí. Tôi đã kiểm tra các hướng dẫn khác nhau và không thể tìm thấy bất kỳ hướng dẫn nào. Có thể làm trong dữ liệu mùa xuân mongodb hoặc tôi nên sử dụng apis cấp thấp chính nó?Truy vấn dữ liệu mùa xuân mongodb bằng chuỗi json

Trả lời

6

Bạn có thể tạo các cá thể truy vấn từ một chuỗi JSON đơn giản bằng cách sử dụng đối tượng BasicQuery. Ví dụ sau đây cho thấy làm thế nào bạn có thể xây dựng một trường hợp truy vấn từ một đồng bằng JSON String:

BasicQuery query = new BasicQuery("{ age : { $lt : 50 } }"); 
List<Person> result = mongoTemplate.find(query, Person.class);  

Một cách khác trong đó sử dụng các API cấp thấp:

DBObject dbObject = (DBObject) JSON.parse(query); 
DBCursor cursor = mongoTemplate.getCollection("person").find(dbObject); 

Sau đó bạn có thể lập bản đồ trở lại các đối tượng trở lại POJO của bạn bằng cách sử dụng phương thức reado() của MongoConverter:

List<Person> returnList = new ArrayList<Person>(); 
while (cursor.hasNext()) { 
    DBObject obj = cursor.next(); 
    Person person = mongoTemplate.getConverter().read(Person.class, obj); 
    returnList.add(person); 
} 
+2

Wow. Cám ơn vì cái này . Tôi đã bị mắc kẹt và chờ đợi một giải pháp. Cảm ơn rất nhiều :) –

+1

@Mohammedshebin Đừng lo lắng, vui lòng trợ giúp :) – chridam

+0

@chridam Xin chào, Cách hỗ trợ truy vấn tổng hợp như db.CollectionName.aggregate ([{$ match: {"st": "i"}}, { $ group:}, {} ..]) ...? –

Các vấn đề liên quan