6

私の文書には次の構造があります。

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

mongo シェルでは、次のクエリを使用して、タイトルが「環境」で値が 2 より大きいスコアを持つドキュメントを見つけることができます。

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

ここで、api doc から morphia を使用してドキュメントをクエリしたいと考えています。「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 シェルの対応物と同じ効果を持つクエリを作成するにはどうすればよいかということです。

4

2 に答える 2

1

私はあなたが試すことができると思います

ds.createQuery(Review.class).
  filter("scores.scoreValue >=", 2).
  filter("scores.scoreTitle", "environment").
  retrievedFields(true, "scores.$")
于 2015-01-01T23:23:08.593 に答える