2012-09-09 24 views
10

Estoy intentando el ejemplo "Desarrollar una API REST Usando Node.js Con Express y Mangosta" y me encontré con un problema con el esquema MongoDB:MongoDB: eliminar restricción única

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" }', 

hay un único contraint en la definición del esquema:

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 } }); 

¿cómo me deshago de eso? Cuando elimino unique: true y reinicio la aplicación, el esquema no se actualiza.

¿Cómo maneja mongodb "altera" el esquema?

Respuesta

6

"¿Cómo se maneja mongodb" se altera "al esquema?"

MongoDB es sin esquema

La única cosa que no se hace cumplir singularidad está en el nivel de indexación donde puede definir índices en una colección con criterios únicos. Por lo tanto, es posible que desee eliminar el índice relacionado y volver a crearlo si es necesario.

+8

Eso funcionó. Para la referencia: > use ecomm_database > db.products.dropIndexes(); { \t "nIndexesWas": 2, \t "MSG": "los índices no _id cayeron para la recolección", \t "ok": 1} –

+0

"MongoDB es * sin esquema *" ... ¿por qué, entonces, ¿hay una sección completa en su documentación sobre el diseño del esquema? http://www.mongodb.org/display/DOCS/Schema+Design –

+0

@ZaidMasud: una descripción del proceso con menos connotaciones que "diseño de esquema" podría ser "modelado de datos" :). Los datos tienen que tomar una forma nominal (es decir, usted todavía debe considerar * el diseño del esquema * para planificar sus datos, consultas e índices) ... pero no se aplica ningún * esquema * rígido en un documento o nivel de recopilación. Este es un contraste distinto del enfoque SQL de un [esquema fijo] (http://en.wikipedia.org/wiki/Information_schema) por tabla, donde cada campo tiene un tipo y tamaño específico. – Stennie

Cuestiones relacionadas