2013-05-13 46 views
6

我的文檔結構如下:

{ 
"scores": [{ 
    "scoreTitle": "environment", 
    "scoreValue": 3, 
    "scoreDescribe": "good" 
}, { 
    "scoreTitle": "service", 
    "scoreValue": 3, 
    "scoreDescribe": "good" 
}, { 
    "scoreTitle": "taste", 
    "scoreValue": 4, 
    "scoreDescribe": "good" 
}] 
} 

在蒙戈外殼,我可以使用下面的查詢來發現其中有一個分數,其文檔標題是「環境」和值大於2

db.reviews.find({"scores":{"$elemMatch":{"scoreValue":{"$gt":2},"scoreTitle":"environment"}}}) 

現在我想查詢使用嗎啡的文檔,從API文檔中,「ELEM」運營商在fiter方法的支持,以及其他查詢標準對象是必需的,例如,查詢具有標題分數的文檔是「環境」,並描述爲「好」:

Score score = new Score();// the criteria object, only support comparisons of equality 
score.setScoreTitle("environment"); // title should be environment 
score.setScoreDescribe("good"); // describe should be good 
Query q = ds.createQuery(Review.class).filter("scores elem", score); 

我的問題是:如何讓我在查詢條件的數字比較,也就是說,我怎樣才能使具有相同的效果查詢作爲mongo shell的副本。

回答

1

我想你可以嘗試

ds.createQuery(Review.class). 
    filter("scores.scoreValue >=", 2). 
    filter("scores.scoreTitle", "environment"). 
    retrievedFields(true, "scores.$")