2017-12-20 8 views
-1

Ich möchte eine Sammlung für die Bewertung des Benutzers erstellen, habe ich Zweifel zwischen 2 Strukturen Schemata.Welcher Ansatz ist besser?

Erstes Schema:

var Rating = new mongoose.Schema({ 
userID: { 
    type: String, 
    minlength: 1, 
    required: true, 
    trim: true 
}, 
ratings: [{ 
    rate: { 
     type: Number 
    } 
    }] 
}); 

Zweites Schema:

var Rating = new mongoose.Schema({ 
userID: { 
    type: String, 
    required: true, 
}, 
rating: { 
    type: Number, 
    required: true 
}, 
}); 

Das erste Schema wird dazu führen, dass jeder der in die Anordnung der Bewertungen geschoben werden Bewertung und die zweite wird mehrere Dokumente der Ursache Einfügen gleiche Benutzer-ID und jedes Dokument enthält seine Bewertung.

Ich würde gern wissen, welcher Ansatz zwischen den beiden empfohlen wird, das Array erhöhen oder Dokumente jedes Mal erhöhen, wenn der Benutzer Bewertung erhält.

Antwort

1

Es hängt von den Details Ihres Projekts ab (es gibt kein einziges sehr gutes und universelles Schema).

Die erste Struktur ist näher an der MongoDB-Ideologie. Vergessen Sie jedoch nicht die Beschränkung der Dokumentgröße (16 MB, außer wenn Sie GridFS verwenden). Diese Struktur ist besser, wenn Sie nicht über eine große Menge an Informationen verfügen (Elemente im Feld ratings). Da alle Bewertungen in einem Dokument enthalten sind, bedeutet dies, dass Ihre Indizes optimal klein sind (ein Benutzer - ein Dokument).

Das zweite Schema ist besser für die Situation, wenn Sie eine große Anzahl von Bewertungen haben (bezogen auf die Dokumentgröße Grenze).

Sie können auch zwei Sammlungen verwenden. Eine für aggregierte Daten (Endergebnisse nach Berechnungen, etwa wie Cache) und eine weitere für detaillierte Informationen. Wie bereits erwähnt - die beste Lösung hängt von den Details des Projekts ab

Ich empfehle Ihnen diesen Artikel zu lesen 6 Rules of Thumb for MongoDB Schema Design

Verwandte Themen