Pregunta

Actualmente tengo una colección de Canales que se almacena de la siguiente manera:

{ "_id" : ObjectId("4f5d1012d48147e840000000"), "title" : "Testing", "description" : "hello!", "created" : "2012-03-11 20:50:26", "user" : ObjectId("4f5d0408d48147207f000000") }

Pero me gustaría que los usuarios ahora pudieran suscribirse a este canal.No creo que esto sea lo suficientemente importante como para considerarlo su propia colección, por lo que me gustaría almacenarlo de la siguiente manera:

{ 
    "_id" : ObjectId("4f5d1012d48147e840000000"), 
    "title" : "Testing", 
    "description" : "hello!",
    "subscriptions" : 
        { "user" : ObjectId("USERIDHERE"), "created" : DATETIME },
        { "user" : ObjectId("USERIDHERE"), "created" : DATETIME },
        { "user" : ObjectId("USERIDHERE"), "created" : DATETIME }
    "created" : "2012-03-11 20:50:26", 
    "user" : ObjectId("4f5d0408d48147207f000000") 
}

Aunque parece que no puedo entender cómo implementar esto limpiamente dentro de mi objeto de litio.¿Mi $story->vote ¿La propiedad será una matriz a la que presiono en cada actualización?

¿Fue útil?

Solución

En mi humilde opinión, la forma en que lo estructure dependerá de cómo utilizará las suscripciones.

La razón por la que digo esto es por problemas de rendimiento en el futuro con objetos mongo incrustados versus colecciones vinculadas. http://www.mongodb.org/display/DOCS/Schema+Design

En lugar de poner la identificación del usuario con la suscripción, propondría vincular la identificación del canal con el usuario (la identificación del canal como una colección integrada en el usuario que se suscribió).

El uso aquí tiene sentido porque cuando extraes la colección del usuario (para su panel de control o tablero o página principal, etc...) tendrás la lista de canales para mostrar.

Incrustar los identificadores de usuario en el canal solo tendría sentido si planea mostrar canales y mostrar todos los usuarios que se suscriben a ellos, algo así como el sistema de chat en el desbordamiento de pila.

Ponerlos en una colección separada tendría sentido si planea realizar agregaciones o si tendrá más de una colección accediendo a suscripciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top