2012-09-09 28 views
10

ben "node.js ile Express ve Mongoose kullanma dinlendirici bir API geliştirin" örneği çalışıyorum ve MongoDB Şeması ile bir sorunla karşılaştık: benzersiz olduğunuMongoDB: kaldırmak benzersiz kısıtlama

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

şema tanımındaki kontrendikasyon:

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

Bundan nasıl kurtulurum? Benzersiz olanı kaldırdığımda: true ve uygulamayı yeniden başlattığınızda şema güncellenmez.

Mandodb şemaya nasıl "geçiş yapar"?

cevap

6

"" mongodb "şemayı" nasıl ele alır? "

MongoDB şema az

orada benzersizliği tek şey zorlanan Eğer benzersiz kriterlere sahip bir koleksiyonu endeksler tanımlayabilirsiniz indeksleme düzeyde olmasıdır. Bu nedenle, 'u ilgili dizini kaldırmak ve gerekirse yeniden oluşturmak isteyebilirsiniz.

+8

Bu işe yaradı. Referans için: > ecomm_database kullanın > db.products.dropIndexes(); , –

+0

"MongoDB olduğunu * şema daha az *" ... neden { \t "nIndexesWas": 2, \t "ileti": 1 : \t "Tamam", "non-_ID endeksleri koleksiyonu için düştü"} o zaman, şema tasarımıyla ilgili belgelerinde bir bölüm var mı? http://www.mongodb.org/display/DOCS/Schema+Design –

+0

@ZaidMasud: "şema tasarımı" ndan daha az çağrışım içeren bir süreç tanımı "veri modelleme" olabilir :). Verilerin bazı nominal şekil alması gerekir (yani, verilerinizi, sorgularınızı ve dizinlerinizi planlamak için * şema tasarımını * düşünmeniz gerekir). Ancak belge veya koleksiyon düzeyinde zorlu * şema * yoktur. Bu, her alanın belirli bir tür ve boyuta sahip olduğu [sabit şema] (http://en.wikipedia.org/wiki/Information_schema) tablosunun SQL yaklaşımından farklı bir kontrasttır. – Stennie

İlgili konular