2010-11-25 18 views
10

Gurus - Estoy atrapado en una situación que no puedo averiguar cómo puedo consultar en la siguiente colección "usuarios", cuenta con 2 documentos incrustados " de registro "y" actividad ":MongoDB - Cómo consultar la inclusión de documentos de una colección

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

que necesitan para consultar:

inicios de sesión únicos de los usuarios que se inscribieron entre fecha y fecha + 7 y se haya identificado dentro de la fecha

continuación:

inicios de sesión únicos de los usuarios que se inscribieron entre fecha y fecha + 7, y conectados entre fecha + 7 y fecha + 14

FAVOR favor me guía de cómo Puedo lograr esto con cualquier ejemplo/muestra? basado en esto será realmente útil :-)

¡Muchas gracias!

+0

¿cómo podría ser la '" actividad "' a dict en lugar de una lista? – Xiao

Respuesta

8

Así es como se obtiene el resultado para su primera consulta:

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

El segundo es semejante a éste con la adición de 7 días a la fecha de inicio y fin de las fechas después de la actividad.

+0

Un problema más aquí, miré a RockMongo, se agregaron claves después de agregar un sub documento de actividad: "actividad": {"0": {"dt": "2010-12-30" ...}, " 1 ": {" dt ":" 2010-12-29 "...}} ... ¿funcionará la consulta anterior en esto? –

+0

No creo que funcione si el subdocumento está estructurado de esa manera. Debería funcionar si las claves están en el subdocumento: "actividad": [{"clave": "0", "dt": "2010-12-30" ...}, {"clave": "1 "," dt ":" 2010-12-29 "...}] ... –

Cuestiones relacionadas