Link avere uno o più tag, quindi in un primo momento potrebbe sembrare naturale per incorporare i tag:Come implementeresti queste query in modo efficiente in MongoDB?
link = { title: 'How would you implement these queries efficiently in MongoDB?'
url: 'http://stackoverflow.com/questions/3720972'
tags: ['ruby', 'mongodb', 'database-schema', 'database-design', 'nosql']}
Come sarebbe queste query essere attuate in modo efficiente?
- link ottenere che contengono uno o più dato tag (per la ricerca di legami con dati tag)
- ottenere un elenco di tutti i tag senza ripetizione (per la ricerca di dialogo completamento automatico)
- ottenere i tag più popolari (per visualizzare i 10 tag o una tag cloud)
l'idea di rappresentare il link di cui sopra è basato sul MongoNY presentation, far scorrere 38.
Per aggiungere un campo popolarità per un tag, il tag avrebbe bisogno di essere aggiunti o spostati in una raccolta differenziata, corretta? – randomguy
non è necessario, puoi tenerlo nella stessa collezione e usare solo un dbref per puntare al tag. una collezione diversa renderà più semplice la gestione dei dati (che è ciò che raccomando). – Asaf
Nella raccolta di tag suggerirei di inserire il nome del tag nel campo _id piuttosto che utilizzare un campo tag separato. Inoltre, se non ti interessa fare un aggiornamento per tag piuttosto che usare $ in, puoi creare la query solo {_id: "tag_name"} e utilizzare la funzione upsert per creare nuove voci di tag. – mstearn