目前,我们的应用程序在 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();
以上获取三个列表;但是,我们不确定如何相互引用它们并获取我们想要的列列表。
非常感谢任何帮助。
谢谢