MongoDB では、次の SQL ステートメントのようなものをどのように実装しますか?
select count(*),t1.a,t1.b
from t1, t2
where (t1.id = t2.t1_id)
and (t2.t1_id in (select id
from t1
order by id desc
limit 10))
group by 2,3
order by 1 desc
ネストされた選択以外のすべてを行う方法を見つけました。
"$in"
現在、ネストされた選択の各値を使用して、外側の選択をループで実行しています。Java コードは次のとおりです。
BasicDBList t1List = new BasicDBList();
DBObject inClause = new BasicDBObject("$in", t1List);
DBObject t2Query = new BasicDBObject("t1s", inClause);
DBObject nextt2;
for (int query = 0; query < 10; query++)
{
System.out.printf("Running query %d - ", query);
DBCursor top_ten_t1s = t1Coll.find().sort(new BasicDBObject("v", -1)).limit(10);
while (top_ten_t1s.hasNext())
{
nextt2 = top_ten_t1s.next();
t1List.clear();
t1List.add(new Long(nextt2.get("_id").toString()));
int theCount = t2Coll.find(t2Query).count();
}
}