У меня есть такая схема ...
var TerritorySchema = new Schema({
user: Schema.Types.ObjectId,
streets: [streets_schema]
)};
var StreetsSchema = new Schema({
name: String,
odd: [block_schema],
even: [block_schema],
tags: [String]
)};
Необходимо иметь возможность найти территорию по идентификатору пользователя.Однако затем мне нужно найти улицу по названию в пределах улиц внутри возвращенного документа.Вот как я это делаю ...
TerritoryModel.findOne({user: userId})
.then(territory => {
// now i have my territory parent object
// and must find street by name
var streetINeedToFind = null;
for(i = 0; i < territory.streets.length; i++){
var street = territory.streets[i];
if(street.name === streetNameToFind){
streetINeedToFind = street;
break;
}
}
})
// catch blah blah blah ... you know
Я новичок в сцене NoSQL, и я просто чувствую, что должен иметь возможность запросить нужную мне улицу, и база данных сделает всепоиск меня.
Схема территории на самом деле намного больше, чем я определил выше, и мне нужно будет запросить более глубоко вложенные поддокументы (например, дом на улице и т. д.).Есть ли способ сделать запрос в документе или какой-то другой более простой способ раскрытия вложенных документов, а не циклически просматривать их?
Я прочитал об агрегации, но не уверен, что это то, что мне нужно?Я могу ошибаться, может, то, что я делаю, - это лучшая практика, может, кто-нибудь, пожалуйста, покажет мне путь?