2016-05-05 15 views
1

In meiner nodejs/mongo/mongoose-Anwendung sind die Benutzer mit verschiedenen Codes verbunden. Das sind 3-Buchstaben-Codes, wie ABC, XYZ, ACD usw. Jede Person kann 0 bis maximal 20 Codes haben. Beispieldaten würden wie folgt aussehen:Wie man Schlüsselcodes in mongodb/mongoose speichert?

[ 
{name: John, codes: 'abc, bbb, dyd, zzz'}, 
{name: Sammy, codes: 'haz, rty, dyd'}, 
{name: Suzanne, codes: 'abc, ccc, mnm, zzz'} 
] 

Wenn ich nach Leuten suche, suche ich nach diesen Codes. zum Beispiel: finde mich alle Leute mit dem Code 'abc' (und andere Eigenschaften haben).

Die Frage: Wie für die beste Leistung, die Benutzer-Codes, Daten speichern? in einer einfachen Zeichenfolge wie in meinem Beispiel? verschiedene Zeilen mit IDs und Index? und wie für Menschen mit einem bestimmten Code in Mungo suchen?

es kann Millionen von Menschen geben, und nicht so viele Codes, vielleicht insgesamt 30, und jede Person wird zwischen 0 und 10 oder 20 Codes haben.

Antwort

0

setzen die Codes in einer Liste wie bereits wie erwähnt Codes: [ "abc", "bbb", "dyd", "zzz"]; Es gibt viele Möglichkeiten, sie hinzuzufügen. Bitte überprüfe die Mongodb Seite. oder durch
db.collection.find ({$ und: [{Codes: "abc"}, {Codes: Sie können immer durch einfache db.collection.find ({ "abc" Codes}) abrufen "bbb" }]}) für die Suche nach mehreren Codes für dieselbe Person. Ein Ex.

`

db.array.insert ({_ ID: 0, codes: []}) --- Write ({ "nInserted": 1}) --- db.array. find() --- { "_id": 0, "Codes": []} --- db.array.update ({_ id: 0}, {$ Push: { "Codes": "aaa"} }); --- WriteResult ({"nMatched": 1, "nUpserted": 0, "nModified": 1}) --- db.array.find() --- {"_id": 0 "Codes": [ "aaa"]} `

+0

sieht gut aus. Was ist der Datentyp für die Codes? Array? Das Hinzufügen von Werten wäre einfach myArray.push ('abc'); ? –

+0

Ja, siehe meinen früheren Kommentar, ich habe es hinzugefügt. – AMITAVA

0

denke ich, sie in einem String speichern Sie bis zu, Fehler zu machen öffnet und macht es schwierig, Codes in der Zukunft zu ändern. Meiner Meinung nach ist es am besten, ein Array zu verwenden, um diese Codes zu speichern und jedem der Codes eine 1-30-Kennung zu geben. Dann können Sie die Kennung für den entsprechenden Code in ihr Code-Array schieben. Wie für die Abfrage, werfen Sie einen Blick auf this question.