2012-09-09 5 views
10

Staram się "Opracowanie REST API Korzystanie node.js Z Express i Mongoose" przykład i wpadłem na problem z MongoDB schematu:MongoDB: usunąć UNIQUE

POST: 
{ title: 'My Awesome T-shirt 2', 
    description: 'All about the details. Of course it\'s black.', 
    style: '12345' } 
{ [MongoError: E11000 duplicate key error index: ecomm_database.products.$style_1 dup key: { : "12345" }] 
    name: 'MongoError', 
    err: 'E11000 duplicate key error index: ecomm_database.products.$style_1 dup key: { : "12345" }', 

istnieje unikalna ograniczenie w definicji schematu:

var Product = new Schema({ 
    title: { type: String, required: true }, 
    description: { type: String, required: true }, 
    style: { type: String, unique: true }, 
    modified: { type: Date, default: Date.now } }); 

Jak mogę się tego pozbyć? Po usunięciu unique: true i zrestartowaniu aplikacji schemat nie zostanie zaktualizowany.

W jaki sposób mongodb obsługuje "zmienia" schemat?

Odpowiedz

6

"W jaki sposób mongotb obsługuje" zmienia "w schemacie?

MongoDB jest schematu mniej

Jedyne tam wyjątkowość jest wymuszana jest na poziomie indeksowania gdzie mogą definiować indeksy na zbiór z unikalnymi kryteriami. Więc możesz usunąć powiązany indeks i ponownie go utworzyć, jeśli to konieczne.

+8

To działało. Dla odniesienia: > użyj ecomm_database > db.products.dropIndexes(); { \t "nIndexesWas": 2, \t "msg": "non-_id indeksy spadły do ​​odbioru", \t "ok": 1 } –

+0

"MongoDB jest mniej schematu * *" ... dlaczego, to czy istnieje cała sekcja w ich dokumentacji dotyczącej projektowania schematów? http://www.mongodb.org/display/DOCS/Schema+Design –

+0

@ZaidMasud: opis procesu o mniejszej liczbie konotacji niż "projekt schematu" może być "modelowaniem danych" :). Dane muszą przybrać pewien kształt nominalny (tzn. Nadal trzeba wziąć pod uwagę * projekt schematu * do planowania danych, zapytań i indeksów), ale nie ma sztywnego * schematu * egzekwowanego na poziomie dokumentu lub kolekcji. Jest to wyraźny kontrast w stosunku do podejścia SQL schematu [fixed schema] (http://en.wikipedia.org/wiki/Information_schema) na tabelę, gdzie każde pole ma określony typ i rozmiar. – Stennie