Mój dokument ma następującą strukturę:
{
"scores": [{
"scoreTitle": "environment",
"scoreValue": 3,
"scoreDescribe": "good"
}, {
"scoreTitle": "service",
"scoreValue": 3,
"scoreDescribe": "good"
}, {
"scoreTitle": "taste",
"scoreValue": 4,
"scoreDescribe": "good"
}]
}
W Mongo powłoki, można użyć następującej kwerendy, aby znaleźć dokument, który ma wynik, którego tytuł jest „środowisko” i wartość jest większa niż 2.
db.reviews.find({"scores":{"$elemMatch":{"scoreValue":{"$gt":2},"scoreTitle":"environment"}}})
teraz chcę kwerendy dokumentu za morfinę, z doc api, operator „elem” jest obsługiwana w metodzie fiter, a dodatkowe zapytania obiekt kryterium jest wymagany, na przykład zapytanie o dokument zawierający wynik, którego tytuł jest „środowisko” i opisać to „dobre”:
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);
Moje pytanie brzmi: Jak mogę dokonać porównania numerycznego w kryteriach zapytania, to znaczy, w jaki sposób mogę zrobić kwerendę, która ma taki sam efekt jako odpowiednik powłoki mongo.