2017-02-14 119 views
-1

我有一個郵政編碼字段,可以在其中輸入多個郵政編碼。這是一個數組字段,我想它應該是唯一的。在MongoDB中創建唯一的數組

貓鼬模式 -

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

我有一個郵政領域,我們可以在其中輸入多個郵政編碼意味着它是一個數組字段我希望它應該是唯一的,如果我輸入303030和[303030,123456],那麼它不應該拋出一個錯誤,但它確實如果我使它獨特 – Mamta

+0

這將幫助我問一個關於stackoverflow的查詢http://stackoverflow.com/help/how-to-ask – Prasad

回答

0

關鍵字unique意味着將只有一個與整個集合在這個重要的文件。例如,如果一個文檔的郵政編碼爲1,則其他文檔將不能擁有它,我認爲這不是您想要的效果。

你在找什麼是$addToSet命令。

我的建議是,你從這個字段中刪除唯一的修飾符,而當向這個數組插入數據時,使用$addToSet命令。

這裏是我在過去的項目使用的示例代碼:

User.findByIdAndUpdate(id, { $addToSet : {accounts : accountId } }) 

在我的例子,它會找到ID的用戶,並添加上一個帳戶。但是,如果它已經有一個帳戶,它不會重複該值。

希望它有幫助。