2016-11-25 1 views
0

Ist es möglich, eine sequenzielle Liste von Enum-Werten in MongoDB zu erstellen, und genauer gesagt, MongooseJS?Sequentielle ENUMs in MongoDB

Was ich meine ist, zum Beispiel, iPhone zu speichern Modelle wie:

"model": { 
    "type": "string", 
    "enum": ["Original", "3g", "3gs", "4", "4s", "5", "5s", "6", "6s", "5SE", "7"] 
} 

oder Kinderkonfektionsgrößen:

"size": { 
    "type": "string", 
    "enum": ["3MO", "6MO", "9MO", "12MO", "18MO", "2T", "2", "3T"...] 
} 

und dann Abfrage Operatoren wie $gt verwenden und $lt für iPhones zur Abfrage mit

"model": { "$gte": "3g" } 

Danke.

Antwort

-1

Ja, Sie können Enum in Mungo erstellen.

siehe die Dokumentation hier. es hat ein detailliertes Beispiel.

http://mongoosejs.com/docs/api.html#schema_string_SchemaString-enum

+0

übereinstimmen. Ja, ich weiß, dass Sie enums erstellen können. Aber meine Frage war, sie als eine Sequenz zu erstellen, so dass ich $ gt und $ lt in Abfragen von ihnen verwenden kann. – nicholas

-1

Sie nicht $lte, $gte für Zeichenfolge verwenden können, ist es nur für Zahlen, aber man kann immer noch $in Operator Abfrage mit

Schema

"field": { 
    "type": "string", 
    "enum": ["a", "b", "c"] 
} 

Abfrage

myModel.find({ 
    field: { 
     $in: ['a', 'some other prop'] 
    } 
}) 

Dies wird alle Instanzen finden, die ['a', 'some other prop'] im Array

+0

Ich verstehe. Ich möchte diese Strings mit numerischen Werten abbilden, so dass ich $ gt und $ lt verwenden kann und zum Beispiel iPhones abfragen kann, wo das Modell größer ist als die "4s". Ich kann dies außerhalb des Datenbankschemas tun, indem ich nur Zahlen in der Datenbank verwende und diese an Strings woanders abbilde, aber ich würde die Daten lieber nicht so verschleiern. Gibt es dafür keinen eingebauten Mechanismus? – nicholas