2017-02-21 5 views
2

を保存する文書に存在しない場合、私は私の場合はMongoDBのマングース:これは

に保存する文書の空のフィールドにデフォルト値を設定しようとした必須フィールドにデフォルト値を設定し、これはマングーススキーマ

var Distribution = new Schema({ 
temporalCoverage : { startDate : { type: Date, default: Date.now }, endDate : { type: Date, default: Date.now } }, 
distributionText : String 
}); 

これは保存するドキュメントです:

をこの文書では、空のフィールドは、endDateにしてたstartDateです。ドキュメントはmongoDBにヌル値で保存されます。

私は、デフォルト値を保存したい
"distribution": { 
    "temporalCoverage": { 
     "endDate": null, 
     "startDate": null 
    }, 
    "distributionText": "test" 
    } 

、NOT NULL

スキーマに必要入れるフィールドの場合は、temporalCoverage : { startDate : { type: Date, required: true, default: Date.now }, endDate : { type: Date, required: true, default: Date.now } }私は、エラーの検証を取得していない、との文書には、それが保存されます。

+0

を更新する際にこれらのキーを提供しないようにしてください参照してください。 wmpty文字列として設定しないでください。 – Edgar

答えて

1

あなたは

var schema = new Schema({ 
    title: String, 
    genre: {type: String, default: 'Action'} 
}); 

var Movie = db.model('Movie', schema); 

var query = {}; 
var update = {title: 'The Terminator'}; 
var options = { 
    // Return the document after updates are applied 
    new: true, 
    // Create a document if one isn't found. Required 
    // for `setDefaultsOnInsert` 
    upsert: true, 
    setDefaultsOnInsert: true 
}; 

Movie. 
    findOneAndUpdate(query, update, options, function (error, doc) { 
    assert.ifError(error); 
    assert.equal(doc.title, 'The Terminator'); 
    assert.equal(doc.genre, 'Action'); 
    }); 

setDefaultsOnInsertオプションを必要とするがhttp://mongoosejs.com/docs/defaults.html