1

データのサブセットがあります

ログイン日などのユーザー、次に場所のコレクション。

特定の日付範囲内にログインしたすべてのユーザーを取得し、郊外ごとにこれを行ったユーザー数を確認したい

ここで、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
4

1 に答える 1