MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Qual è la migliore struttura dati per archiviare questi dati su mongoDB?

La tua struttura sembra corretta. Stai memorizzando solo news_id nel campo dati e questa è un'implementazione più intelligente perché la memorizzazione di un documento completo causerà molti spostamenti e scrittura da parte di MongoDB ogni volta che una nuova notizia viene aggiunta ai preferiti dall'utente.

Il motivo, che probabilmente già conosci, è che ad ogni aggiornamento viene creato un nuovo documento. Riferimento:http://docs.mongodb.org/ manual/reference/method/db.collection.save/#upsert .

Inoltre, penso che come regola aziendale dovresti limitare il numero di notizie che possono essere impostate come preferite dall'utente. Consentire a questo elenco di crescere indefinitamente non sarà una buona idea per il design incorporato.

Nel caso in cui desideri un numero illimitato di preferiti, è meglio creare una raccolta separata per questo e quindi per ottenere tutti i preferiti da un utente utilizzare gli operatori $match (sull'ID utente) e $sort (di notizie) in una query di aggregazione per ottenere l'elenco ordinato delle notizie preferite per l'utente.