2017-02-14 18 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

これは私に質問をするのに役立ちます。 – Prasad

答えて

0

キーワードuniqueは、コレクション全体でこの値を持つ1つの文書のみが存在することを意味します。たとえば、ある文書に郵便番号1がある場合、他の文書はその文書を持つことができません。希望する効果はないと思います。

あなたが探しているのは$addToSetです。

このフィールドから一意の修飾子を削除し、この配列にデータを挿入するときは$addToSetコマンドを使用することをお勧めします。ここで

は、私が過去のプロジェクトで使用するサンプルコードです:

私の例では
User.findByIdAndUpdate(id, { $addToSet : {accounts : accountId } }) 

、それはidでユーザを検索し、その上に1つのアカウントを追加します。しかし、すでにアカウントを持っている場合は、値を複製しません。

希望しました。

関連する問題