2016-07-19 23 views
0

Ich bin Anfänger Benutzer zu MongoDB. In unserer Anwendung ist die Datengröße für jede Tabelle ziemlich groß. Also habe ich mich entschieden, die Datei in verschiedene Sammlungen zu teilen, obwohl sie gleich ist. Der einzige Unterschied ist die "ID" zwischen jedem Dokument (Dokumente in einer Sammlung ist unter einer Kategorie) in allen Sammlungen. Also haben wir uns entschieden, die Daten in Zahlensammlungen einzufügen, und jede Sammlung hat eine bestimmte Anzahl von Dokumenten. Derzeit habe ich 10 Sammlungen von gleichen Arten von Dokumentendaten. Meine Anforderung ist 1) um die Daten aus allen Sammlungen in einer einzigen Abfrage auf der Anwendungshomepage anzuzeigen. 2) Ich muss die Daten durch Sortieren und Filtern vor dem Abrufen erhalten.Lesen der ähnlichen Daten aus mehr als zwei Sammlungen in MongoDB

Ich habe einige der Beiträge im Stackoverflow durchgehen sagen, dass Mongo-3.2 $ Lookup Aggregation für diese Anforderung verwenden. aber ich vermute, wenn ich $ lookup für 10 Sammlungen verwende, kann es Leistungsproblem und zu komplexe Abfrage geben. da ich die gleiche Art von Daten in Anzahl der Sammlungen geteilt habe (Jede Sammlung wird die Dokumente haben, die unter einer Kategorie fallen, So habe ich die 10 Kategorien, also muss ich 10 Sammlungen verwenden).

Könnte irgendein Körper mir bitte vorschlagen, ob meine Annäherung richtig ist?

+0

Wenn Sie die Sammlungen wegen der großen Datengröße aufteilen, sollten Sie stattdessen [sharding] (https://docs.mongodb.com/manual/sharding/) verwenden, um die Last/Größe zu verteilen. –

Antwort

0

Wenn Sie viele Daten haben, wie können Sie alle auf einer Webseite anzeigen?

Mein Verständnis ist, dass Sie nur einen Teil des Datasets anzeigen, indem Sie die Datenbank abfragen. Da Sie nicht erwähnt haben, wie viele Datensätze Sie haben, ist es nicht einfach, eine Empfehlung zu geben.

Basierend auf der vagen Beschreibung, sharding ist die Lösung, sollten Sie die official doc überprüfen.

Bevor Sie Sharding durchführen, und da Sie bereits erwähnt haben, dass Sie ein Anfänger sind, möchten Sie wahrscheinlich zuerst die Indexierung Ihrer Datenbanken, Datenmodelle und Benchmarks Ihrer Leistung überprüfen.

Hoffe, das hilft.

0

Sie sollten alle 10 Arten von Daten in einer Sammlung speichern, nicht in 10. 10. Machen Sie die Dinge nicht schwieriger, als sie sein müssen.

+0

Ja das ist richtig Helmy, aber die Daten werden riesig sein, für eine Sammlung wird es riesig sein. –

+0

Definieren Sie "riesig"? Es spielt keine Rolle, Sie sollten solche Sammlungen nicht nur auf Basis der Datenmenge aufteilen. Wie von Wan erwähnt, wäre Sharding der Ansatz für den Umgang mit Skalierung. – helmy

+0

Können Sie bitte http://stackoverflow.com/questions/38455609/getting-the-required-documents-from-both-the-collections-in-one-query-in-mongodb/38456140?noredirect=1# comment64318284_38456140 Dies entspricht genau meiner Anforderung –