現在、アプリケーションは Play 1.2.5 でバックエンドに MySQL を使用しています。このシステムを Morphia を使用して MongoDB に移植しようとしています。
MySQL Join クエリを Morphia を使用する MongoDB に変換する際に問題が発生しました。以下は SQL クエリです。
SELECT jobs.postal, count(distinct timesegments_id), group_concat(timesegments_id order by timesegments_id) as types, latitude, longitude FROM jobs
left join geocodes on jobs.geocode_id = geocodes.id left join jobs_timesegments on jobs_timesegments.jobs_id = jobs.id
where geocodes.last_updated is not null
and longitude >0
and timesegments_id is not null
group by jobs.postal;
以下は私たちが試したことです:
List<models.Geocode> Geocodelist = models.Geocode.find().filter("longitude >",0).filter("last_updated",new BasicDBObject("$ne","last_updated")).asList();
List<String> geocodeids = new ArrayList<String>();
for (models.Geocode geocode : Geocodelist) {
geocodeids.add(geocode.getIdAsStr());
}
List<models.Job> job = models.Job.find().filter("geocode_id",new BasicDBObject("$in",geocodeids)).asList();
List<String> jobids = new ArrayList<String>();
for (models.Job joblist : job) {
jobids.add(joblist.getIdAsStr());
}
List<models.Jobs_TimeSegments> timesegments_data = models.Jobs_TimeSegments.find().filter("jobs_id",new BasicDBObject("$in",jobids)).asList();
上記は 3 つのリストをフェッチします。ただし、それらを相互に参照して、必要な列のリストを取得する方法がわかりません。
どんな助けでも大歓迎です。
ありがとう