2017-02-20 4 views
1

私のマングーススキーマはこのようです。ネストされたドキュメントプロパティによるmongooseクエリ

var ProfileAddressSchema = new Schema({ 
    streetAddress: { type: String, required: true }, 
    businessAddress: { type: String, required: false }, 
    country: {type: Schema.Types.ObjectId, ref: 'Country', required: false }, 
    city: { type: Schema.Types.ObjectId, ref: 'City', required: false }, 
    province: { type: String, required: false }, 
    postalCode: { type: String, required: false }, 
    isDelete: { type: Boolean, default: false }, 
    sequence: { type: Number, default: 0 }, 
    isDefault: { type: Boolean, default: false } 
}); 

var ProfileInfoSchema = new Schema({ 

    name: { type: String, required: true }, 
    firstName: { type: String, required: false }, 
    addressList:[ProfileAddressSchema], 

}); 

私は以下のように試しましたが、うまくいきません。私は提供された郵便番号と一致するプロファイルを取得したい。

var criteria = {}; 
criteria.addressList = {} 
criteria.addressList.postalCode = new RegExp(searchPrameters.postalCode, "i"); } 
serviceHelper.queryModel(ProfileInfo,criteria, { __v: false }, callback); 

答えて

3

埋め込みドキュメントを照会するのにdot notationを使用してください。セクションQuery an Array of Embedded Documentsのマニュアルを参照して、より多くの例については

var criteria = {}; 
criteria["addressList.postalCode"] = new RegExp(searchPrameters.postalCode, "i"); 
serviceHelper.queryModel(ProfileInfo,criteria, { __v: false }, callback); 

:結果としてあなたのクエリはあなたがbracket notationを使用してdot notationキーを持つクエリオブジェクトを構築することができます

ProfileInfo.find({ 
    "addressList.postalCode": new RegExp(searchPrameters.postalCode, "i") 
}).exec(callback); 

ようにする必要があります。

関連する問題