MongoDB - Как запросить встроенные документы из коллекции - PullRequest
10 голосов
/ 25 ноября 2010

Гуру - я застрял в ситуации, когда не могу понять, как я могу сделать запрос из следующей коллекции " users ", у нее есть 2 встроенных документа " регистрация"и" активность":

{
    "appid": 2,
    "userid": 404915,
    "signup": {
        "dt": "2010-12-28",
        "platform": 2 
    },
    "activity": {
        {
            "dt": "2010-12-28",
            "platform": 3,
            "login_count": 8,
            "game_completed": 13 
        },
        {
            "dt": "2010-12-30",
            "platform": 3,
            "login_count": 8,
            "game_completed": 13 
        } ,
        {
            "dt": "2010-12-31",
            "platform": 3,
            "login_count": 8,
            "game_completed": 13 
        } 
    }
},{"appid":2,"userid":404915...}

Мне нужно запросить:

уникальные логины пользователей, которые зарегистрировались между датой и датой + 7 и вошли в систему в течение даты

Тогда:

Уникальные имена пользователей, которые зарегистрировались между датой и датой + 7 и вошли между датой + 7 и датой + 14

ПОЖАЛУЙСТА, ПОЖАЛУЙСТА, назовите мне, как я могу достичь этого любого примера / образца? на основании этого будет действительно полезно: -)

Большое спасибо!

1 Ответ

8 голосов
/ 25 ноября 2010

Вот как вы получите результат для вашего первого запроса:

var start = new Date(2010, 11, 25);
var end = new Date(2010, 12, 1);

db.users.distinct("userid", {"signup.dt" : {$gte: start, $lte: end},
      "activity" : {"$elemMatch" : { dt: {$gte: start, $lte: end}}}});

Второе похоже на добавление 7 дней к начальной и конечной дате к датам после действия.

...