Consejo para el esquema de una relación de muchos a muchos muchas veces

17 views
Skip to first unread message

Fco. Javier Sánchez-Ostiz Erviti

unread,
Oct 10, 2012, 9:12:58 AM10/10/12
to mongos...@googlegroups.com
Buenas tardes, estoy empezando en mongo (vengo de MySQL) y estoy dándole vueltas a cómo generar el esquema siguiente. Por un lado tengo canciones, por otro categorías y después usuarios. Lo típico, una canción puede pertenecer a distintas categorias de distintos usuarios, en MySQL sería algo así:

                             CANCIONES       USUARIO      CATEGORÍA    CANCION_CATEGORIA_USUARIO
                             id_cancion           id_usuario      id_categoría     id_cancion, id_usuario, id_categoría

Cual creeis que es la forma correcta de hacer esto mismo con mongo? o mejor hacerlo con MySQL? las canciones están en mongo, los usuarios en MySQL y categorías y relación donde más rabia me de, pero prefiero que sea en mongo porque la velocidad de lectura y escritura tiene que ser muy rápida.

Gracias por toda aportación!

Javi
                   

David Cuadrado

unread,
Oct 10, 2012, 10:53:01 AM10/10/12
to mongos...@googlegroups.com

Puedes usar un array para guardar los ids(de las categorias por ejemplo) y consultar con el operador $in. Si categoria solo es un string no necesita ser una coleccion, puede ser un array de strings.
No olvides indexar estos arrays.
Esta es la parte mas dificil de mongo y en la que muchos se equivocan.

--
Has recibido este mensaje porque estás suscrito al grupo "mongospanish" de Grupos de Google.
Para ver este debate en la Web, visita https://groups.google.com/d/msg/mongospanish/-/N4lZYvYVRBUJ.
Para publicar una entrada en este grupo, envía un correo electrónico a mongos...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a mongospanish...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/mongospanish?hl=es.

Fco. Javier Sánchez-Ostiz Erviti

unread,
Oct 10, 2012, 2:22:33 PM10/10/12
to mongos...@googlegroups.com
David podrías ponerme un ejemplo de la estructura por favor, viendolo con datos seguro que me hago una mejor idea

David Cuadrado

unread,
Oct 10, 2012, 2:58:39 PM10/10/12
to mongos...@googlegroups.com
Lo que te digo es algo asi:

Colletion1
  collection2_ids: ["id1", "id2", "id3"]

  para encontrar los collection2 simplemente es buscar Collection2 con _id $in collection2_ids
  desde collection2 para encontrar los collection1 en donde esta se seria collection2_ids $in [collection2 _id]

Respecto a tu problema creo que se puede resolver con una tecnica similar a la anterior pero te hacen falta explicar el problema, hay muchas cosas que no son claras. Por ejemplo: que es una "categoria"? las categorias las define cada usuario o son globales?


2012/10/10 David Cuadrado <kra...@gmail.com>



--
David Cuadrado


Fco. Javier Sánchez-Ostiz Erviti

unread,
Oct 11, 2012, 3:32:38 AM10/11/12
to mongos...@googlegroups.com
Las categorías son globales, no están asociadas a ningún usuario, todos los usuarios tienen acceso a todas las categorías y las canciones los mismo, todos tienen acceso a todo el listado de canciones. Por eso estaba pensando algo del tipo:

usuario
  canciones: ["idCategoria1": [idCancion1, idCancion2], "idCategoria2": [idCancion1, idCancion3], "idCategoria3": [idCancion4]]

Sería correcto?
Reply all
Reply to author
Forward
0 new messages