У меня есть две коллекции, стопы и услуги для приложения для отслеживания городских автобусов. Вот схемы:Есть ли более быстрый способ выполнить этот запрос MongoDB?
var ServiceSchema = new mongoose.Schema({
name: {type: String, index: true},
description: String,
service_type: String,
routes: {type: Array, "default": []}
});
«маршруты», выше, представляет собой массив объектов и каждый объект имеет поле под названием «остановка», который является массивом stop_id, каждый из которых индексов к документу Stop.
var StopSchema = new mongoose.Schema({
stop_id: {type: Number, index: true},
name: String,
identifier: String,
locality: String,
orientation: Number,
direction: String,
coordinates : {type: [Number], index: '2d'},
destinations: { type: Array, "default": []},
services: {type: Array, "default": []}
});
Я хочу найти все документы Stop, проиндексированные stop_ids в рамках данной службы. Я использовал цикл for.
var stops = db.services.findOne().routes[0].stops;
stops.forEach(function(j,k){
printjson(db.stops.findOne({stop_id: j}));
});
ли это, кажется правильным, или есть более сложные (быстрее) , как я могу это сделать?
ли выполняется быстрее, а что? – michaelAdam
@michaelAdam Да, это всего лишь один запрос вместо одного на остановку. – JohnnyHK
Но разве этот запрос не должен включать внутри? – michaelAdam