Mongodb: Memorizzazione di una serie di abbonati all'interno di un oggetto genitore

StackOverflow https://stackoverflow.com//questions/9673435

  •  12-12-2019
  •  | 
  •  

Domanda

Attualmente ho una collezione di canali che viene memorizzata come segue:

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

Ma vorrei che gli utenti ora siano in grado di iscriversi a questo canale.Non penso che questo sia abbastanza importante da considerare la propria collezione, quindi vorrei conservarlo come quanto segue:

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

Anche se non riesco a farti prendere la testa su come implementarti in modo pulito nel mio oggetto al litio.La mia proprietà $story->vote sarebbe un array che spingiamo su ogni aggiornamento?

È stato utile?

Soluzione

Imho, come la struttura che dipenderà da come userai gli abbonamenti.

La ragione per cui dico questo è a causa delle prestazioni riguarda la linea con oggetti MONGO incorporati contro collezioni collegate. http://www.mongodb.org/display/docs/schema+design

Invece di mettere l'ID utente con l'abbonamento, propongo il collegamento dell'ID canale con l'utente (ID canale come raccolta incorporata nell'utente che ha sottoscritto).

L'utilizzo qui ha senso perché quando si estrae la raccolta dell'utente (per il loro pannello di controllo o dashboard o prima pagina, ecc ...) Avrai l'elenco dei canali da visualizzare.

Incorporamento degli ID utente nel canale avrebbe senso solo se si prevede di visualizzare i canali e mostrando tutti gli utenti che si iscrivono a loro, come il sistema di chat in stack overflow.

Metterli in una collezione separata avrebbe senso se pianifichi di fare aggregazioni o avrà più di una raccolta che accede alle abbonamenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top