У меня есть следующие схемы; Адрес - это геокодированное местоположение, и у агентства есть много адресов. Мой вопрос: если я хочу иметь возможность выполнять геопространственный поиск по агентству на основе его адресов, тогда мне нужно каким-то образом проиндексировать их на уровне агентства (уже проиндексированных на уровне схемы адреса)?
Кроме того, я ' m с трудом находят информацию о том, как искать на основе вложенных документов. В этом сценарии, возможно ли вообще сделать то, на что я надеюсь, или я должен немного расширить свою доменную структуру и получить «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}
});