2011-10-17 17 views
7

¿Tiene sentido usar subcolecciones (alrededor de 15) para cada usuario? La cantidad de usuarios es de aproximadamente 10k. La cantidad de registros en subcolecciones puede alcanzar 2M. O tal vez debería usar una gran colección común? Gracias por tus respuestas.mongo usando la subcolección

Respuesta

8

Las colecciones integradas simplifican la base de datos (disminuyen el número de colecciones) y hacen que la base de datos funcione más rápido. Por lo general, trato de incrustar todo y solo si no puedo crear colecciones separadas. Si su colección incrustada será grande puede excluirlo del usuario durante la carga:

db.posts.find({ tags : 'tennis' }, { comments : 0 }); 

Por encima de la consulta se cargue mensajes sin comentarios. Documentation

Pero las colecciones integradas también añaden cierta complejidad. Por ejemplo, mongodb no puede ordenar la colección incrustada por usted. Ordene siempre por defecto. Pero puedes hacerlo en el lado del cliente. Si el trabajo orden predeterminado para usted, usted puede página de la colección anidada a través $ rebanada:

db.posts.find({}, {comments:{$slice: [20, 10]}}) // skip 20, limit 10 

También echa un vistazo a este doc sobre el diseño del esquema.

So + 1 a la incrustación siempre que sea posible.