22

「Express と Mongoose で Node.js を使用して RESTful API を開発する」の例を試しているところ、MongoDB スキーマで問題が発生しました。

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

スキーマ定義には固有の制約があります。

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

どうすればそれを取り除くことができますか?unique: true を削除してアプリを再起動すると、スキーマが更新されません。

mongodbはスキーマの「変更」をどのように処理しますか?

4

3 に答える 3

13

「mongodb はスキーマの「変更」をどのように処理しますか?」

MongoDB はスキーマレスです

一意性が強制されるのは、一意の基準でコレクションにインデックスを定義できるインデックス作成レベルだけです。そのため、関連するインデックスを削除して、必要に応じて再作成することをお勧めします。

于 2012-09-09T07:53:46.563 に答える