1

現在、アプリケーションは 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 つのリストをフェッチします。ただし、それらを相互に参照して、必要な列のリストを取得する方法がわかりません。

どんな助けでも大歓迎です。

ありがとう

4

0 に答える 0