我有一个zipcode字段,我们可以输入多个zipcode。这是一个数组字段,我希望它应该是唯一的。
Mongoose架构 -
const RegionalZones = new Schema({
name : { type : String, required : true },
country : { type : String, required : true },
zipCodes : { type : Array, required : true},
isBlocked: { type: Boolean, default : false },
serviceTax: { type: Number, default:10},
cancelFee: {type: Number, default: 7.50},
contractorCancelFee: {type: Number, default: 7.50},
createdAt : {type : Date, default : Date.now},
updatedAt : {type : Date, default : Date.now}
});
RegionalZones.index({ country: 1, zipCodes: 1,name:1 }, { unique: true });
module.exports = mongoose.model('RegionalZones', RegionalZones);
答案 0 :(得分:0)
关键字unique
表示整个集合中只有一个具有此值的文档。例如,如果一个文件有一个邮政编码1,那么没有其他文件可以拥有它,我认为这不是你想要的效果。
您正在寻找的是$addToSet
命令。
我的建议是从此字段中删除unique修饰符,而是在将数据插入此数组时,使用$addToSet
命令。
以下是我在过去的项目中使用的示例代码:
User.findByIdAndUpdate(id, { $addToSet : {accounts : accountId } } )
在我的示例中,它将按ID找到用户并在其上添加一个帐户。但如果它已有帐户,则不会复制该值。
希望它有用。