2016-11-25 3 views
0

Возможно ли создать последовательный список значений перечисления в MongoDB, а точнее MongooseJS?Последовательные ENUM в MongoDB

То, что я имею в виду, например, хранение iPhone модели, как:

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

или детской одежды размеров:

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

, а затем использовать операторы запросов, как $gt и $lt для запроса айфонов с

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

Спасибо.

ответ

-1

Да, вы можете создать перечисление в мангусте.

обратитесь к документации. он имеет подробный пример.

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

+0

Да, я знаю, вы можете создавать перечисления. Но мой вопрос состоял в том, чтобы создать их как последовательность, чтобы я мог использовать $ gt и $ lt в запросах из них. – nicholas

-1

Вы не можете использовать $lte, $gte для строки, это только цифры, но вы можете запросить с помощью $in оператора

Схема

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

Запрос

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

Это найдет все экземпляры, которые соответствуют ['a', 'some other prop'] в массиве

+0

Я понимаю. То, что я хочу сделать, - сопоставить эти строки с числовыми значениями, чтобы я мог использовать $ gt и $ lt и, например, запрашивать iPhone, где модель больше, чем «4s». Я могу сделать это за пределами схемы базы данных, просто используя числа в базе данных и сопоставляя их со строками где-то в другом месте, но я бы предпочел не запутывать такие данные. Нет ли встроенного механизма для этого? – nicholas

Смежные вопросы