Verbindungen haben ein oder mehrere Tags, also auf den ersten könnte es natürlich erscheinen die Tags einzubetten:Wie würden Sie diese Abfragen effizient in MongoDB implementieren?
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']}
Wie würden diese Abfragen ausgeführt werden effizient?
- Get Links, die einen oder mehrere gegebene Tags enthalten (für Verbindungen mit bestimmten Tags suchen)
- Hier finden Sie eine Liste aller Tags ohne Wiederholung (für Suchfeld Autovervollständigung)
- Holen Sie sich die beliebtesten Tags (nach oben 10 Tags anzeigen oder eine Tag-Wolke)
die Idee, die Verbindung, wie oben darstellen basiert auf der MongoNY presentation schieben 38.
Um eine Popularität Feld für einen Tag hinzuzufügen, der Tag müßte in eine separate Sammlung hinzugefügt oder verschoben werden, richtig? – randomguy
müssen Sie nicht, Sie könnten es in der gleichen Sammlung behalten und einfach ein dbref verwenden, um auf das Tag zu zeigen. Eine andere Sammlung wird es einfacher machen, Ihre Daten zu verwalten (was ich empfehle). – Asaf
In der Tagsammlung würde ich vorschlagen, den Tag-Namen in das _id-Feld zu setzen, anstatt ein separates Tag-Feld zu verwenden. Auch wenn es Ihnen nichts ausmacht, ein Update pro Tag durchzuführen, anstatt $ in zu verwenden, können Sie die Abfrage nur {_id: "tag_name"} erstellen und die Funktion upsert verwenden, um neue Tag-Einträge zu erstellen. – mstearn