2010-11-25 3 views
10

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

{ 
    "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

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

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

+0

Как может быть `` деятельность '`дикта, а не список? – Xiao 2013-01-12 17:22:25

ответ

8

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

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 дней до даты начала и завершения к датам после деятельности.

+0

Еще одна проблема здесь, я посмотрел на RockMongo, после добавления подфайла деятельности добавлены ключи: «activity»: {«0»: {"dt": "2010-12-30" ...}, " 1 ": {" dt ":" 2010-12-29 "...}} ... будет ли этот запрос работать над этим? – 2010-11-26 13:16:47

Смежные вопросы