Можно / нужно проиндексировать встроенный документ в Mongoose?

У меня есть следующие схемы; Адрес - это геокодированное местоположение, и у агентства есть много адресов. Мой вопрос: если я хочу иметь возможность выполнять геопространственный поиск по агентству на основе его адресов, тогда мне нужно каким-то образом проиндексировать их на уровне агентства (уже проиндексированных на уровне схемы адреса)?

Кроме того, я ' 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}
});
6
задан Chance 19 September 2011 в 01:09
поделиться