私はこのようなものを持っています:
var mongoose = require('mongoose');
mongoose.connect('mongodb://...');
var UserSchema = mongoose.Schema({
name: {
type: String,
unique: true
},
token: {
type: String,
unique: true,
sparse: true
}
});
var User = mongoose.model('User', UserSchema);
var peter = new User();
peter.name = 'peter';
peter.token = null;
peter.save(function(err) {
if (err) console.log(err);
console.log('done with peter');
var john = new User();
john.name = 'john';
john.token = null;
john.save(function(err) {
if (err) console.log(err);
console.log('done with john');
});
});
Sopeter
は最初とその後に作成されjohn
ます。ただし、john
保存mongoose
すると次のエラーが返されます
{ [MongoError: E11000 duplicate key error index: node-login.users.$token_1 dup key: { : null }]
name: 'MongoError',
err: 'E11000 duplicate key error index: node-login.users.$token_1 dup key: { : null }',
code: 11000,
n: 0,
lastOp: 0,
connectionId: 4527333,
ok: 1 }
実行中のmongolabで試したコードmongo v2.0.7
とmongoose v3.5.1
.
sparse
インデックスを設定すると、複数のnull
値が許可されると思いました。およびの mongolab バックエンドの [インデックス] タブに表示されるように、インデックスは適切に設定されていtrue
ます。エラーが発生する理由はありますか?unique
sparse