2010-11-25 8 views
10

Gurus - Je suis coincé dans une situation que je ne peux pas comprendre comment je peux interroger de la collection suivante "utilisateurs", il a 2 documents intégrés "inscription "et" activité « :MongoDB - Comment interroger des documents incorporés à partir d'une collection

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

je dois interroger:

connexions uniques des utilisateurs qui se sont inscrits entre la date et la date + 7 et connecté entre les dates suivantes

Puis:

logins uniques des utilisateurs qui se sont inscrits entre la date et la date + 7, et connecté entre la date + 7 et date + 14

S'IL VOUS PLAÎT S'IL VOUS PLAÎT Guidez-moi comment Je peux réaliser ceci n'importe quel exemple/échantillon? basé sur ce sera vraiment utile :-)

Merci beaucoup!

+0

comment pourrait être le '' activité "' un dict plutôt qu'une liste? – Xiao

Répondre

8

Voici comment vous obtenez le résultat de votre première requête:

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}}}}); 

Le second est comme avec l'ajout de 7 jours au début et à la date de fin aux dates après l'activité.

+0

Un autre problème ici, j'ai regardé RockMongo, il y a des clés ajoutées après l'ajout d'un sous-document d'activité: "activité": {"0": {"dt": "2010-12-30" ...}, " 1 ": {" dt ":" 2010-12-29 "...}} ... la requête ci-dessus a-t-elle fonctionné? –

+0

Je ne pense pas que cela fonctionnera si le sous-document est structuré de cette façon. Cela devrait fonctionner si les clés sont dans le sous-document: "activity": [{"key": "0", "dt": "2010-12-30" ...}, {"key": "1 "," dt ":" 2010-12-29 "...}] ... –

Questions connexes