У меня есть следующие схемы; Адрес - это геокодированное местоположение, и у Агентства много адресов. У меня вопрос: если я хочу иметь возможность выполнять геопространственный поиск по агентству по его адресам, то нужно ли мне каким-то образом индексировать их на уровне агентства (уже проиндексирован на уровне схемы адресов)?
Кроме того, мне трудно найти информацию о том, как найти, основываясь на вложенных документах. В этом сценарии возможно ли даже сделать то, на что я надеюсь, или я должен немного расширить структуру своего домена и получить «AgencyAddress»? Этот подход мне кажется немного СУРБД, но я также вижу его преимущества.
Я немного озадачен тем, как я мог бы использовать ссылки ObjectId от Agency (или объект-мост AgencyAddress) без обратной ссылки с адреса. Я не хочу иметь обратных ссылок, потому что адрес будет использоваться рядом других объектов в приложении.
Спасибо!
var AddressSchema = new Schema({
name : {type: String, default : ''},
street1 : {type: String, default : ''},
street2 : {type: String, default : ''},
city : {type: String, default : '', required: true},
state : {type: String, required : true},
zip : {type: String, default ''},
country : {type: String},
location : {longitude: Number, latitude:Number}
type : {type: String, enum:['agent', 'agency', 'registrant'], index:true}
created_at : {type: Date, default: Date.now},
updated_at : {type: Date, default: Date.now}
primary : {type: Boolean, default: false}
});
AddressSchema.index({location: '2d'});
Агентство:
var AgencySchema = new Schema({
name : {type : String, default : '', required : true},
Type : {type : String, enum['medical', 'disaster-service', 'local-law', 'state-law', 'federal-law'], index:true},
Addresses : [Address],
created_at : {type : Date, default : Date.now},
updated_at : {type : Date, default : Date.now}
});