1

目前,我们的应用程序在 Play 1.2.5 上,后端使用 MySQL。我们正在尝试使用 Morphia 将此系统移植到 MongoDB。

我们在将 MySQL 连接查询转换为使用 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();

以上获取三个列表;但是,我们不确定如何相互引用它们并获取我们想要的列列表。

非常感谢任何帮助。

谢谢

4

0 回答 0