mongodb sparse &unique

最近在使用mongoose插入文档的时候遇到了一个错误,

     错误大致如下:MongoError: E11000 duplicats key error index: xxx$user_1 dup key: { : null}

意思很明显,插入的key对应的value值已经存在,但是疑惑的地方就在于,这个值是null,null为什么会重复?

原因就在于user这个key使用了unique的属性,for example:

let schema = new Schema({
	user: { type: String, unique: true }
});

当创建文档的时候如果不添加user这个key,就会被赋一个默认值null,而这个null只能存在一个,再次创建一个user为null的时候就会报上面的错误。

难道没有解决办法了吗?不,聪明的mongodb考虑到了,于是提供了sparse属性,这两个搭配使用就可以解决这个问题。

mongodb sparse

官方文档:An index that is both sparse and unique prevents collection from having documents with duplicate values for a field but allows multiple documents that omit the key.

于是这样使用:

let schema = new Schema({
	user: { type: String, unique: true, sparse: true }
});

如果key不是必须唯一的建议不使用unique属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值