2015-11-02 71 views
5

我的代碼需要支持客戶端發送的任何查詢。客戶端將以json身份發送查詢。我已經使用java mongo驅動程序低級別的API使用以下代碼,
BasicDBObject queryObject = (BasicDBObject) JSON.parse(whereJson.toString());
由於我是春季數據mongodb的新手,我無法在Query或Criteria類中找到類似的解決方案。我查了不同的教程,找不到任何。是否有可能在春天的數據mongodb做,或者我應該使用低級別的API本身?json字符串彈簧數據mongodb查詢

回答

6

您可以使用BasicQuery對象從純JSON字符串創建查詢實例。下面的例子演示瞭如何從一個普通的JSON字符串構造一個Query實例:

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

,它使用低級別的API的另一種方式:

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

然後,您可以映射回對象回你的Person POJO使用MongoConverter的read()方法:

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

哇。謝謝你。我被困住並等待解決方案。非常感謝:) –

+1

@Mohammedshebin不用擔心,樂意幫忙:) – chridam

+0

@chridam嗨,如何支持聚合查詢,如db.CollectionName.aggregate([{$ match:{「st」:「i」}},{ $ group:},{} ..])...? –