データのサブセットがあります
ログイン日などのユーザー、次に場所のコレクション。
特定の日付範囲内にログインしたすべてのユーザーを取得し、郊外ごとにこれを行ったユーザー数を確認したい
ここで、SQL でテーブルを結合し、グループ化とカウントを行います。
しかし、mongo では、集計関数を使用するのが最善の方法なのか、map reduce 機能を使用するのが最適なのかわかりません。
{
"_id" : ObjectId("50174af210bb50b471000036"),
"state_code" : "ACT",
"suburb" : "Barton",
"postcode" : 221,
"loc" : [149.129623, -35.302345]
}
プロフィールはこんな感じ
{
"_id" : ObjectId("50176d9b539ba2903e000001"),
"created_at" : ISODate("2012-07-31T05:31:07.538Z"),
"gender" : "female",
"first_name" : "Marge",
"last_name" : "Simpson",
"location_id" : ObjectId("50174af210bb50b471000235"),
"s_location_name" : "Surry Hills (NSW)",
"updated_at" : ISODate("2012-10-18T23:29:54.979Z"),
"user_id" : ObjectId("50176c2510bb50a618000002")
}
ユーザーには最後のログインがあります
{ "_id" : ObjectId("50176c2510bb50a618000002"),
"created_at" : ISODate("2012-07-31T03:09:47.363Z"),
"last_sign_in_at" : ISODate("2012-10-08T04:56:53.751Z"),
"updated_at" : ISODate("2012-10-30T03:52:33.976Z")
}
私が欲しいのは
期間内にサインアップした Melbourne X ユーザー
したがって、SQL 疑似コードは次のようになります。
select suburb, count(*)
from user
where last_login between x and y
group by suburb