[英]Multiple queries in mongoDB
我想查詢mongodb中的多個集合,我有一些這樣的數據
Collection stops {
{ stop_id : 1, stop_name: 'a'},
{ stop_id : 2, stop_name: 'b'}, ...
Collection stop_time {
{ stop_id : 1, trip_id: 40},
{ stop_id : 2, trip_id: 41}, ...
Collection trips {
{ trip_id : 40, route_id: 400},
{ trip_id : 41, route_id: 401}, ...
Collection route {
{ route_id : 400, route_name: 'foo'},
{ route_id : 401, route_name: 'bar'}, ...
對於每個stop_name,我想知道與其匹配的route_name ...(順便說一下,我沒有選擇他的數據結構,那是GTFS格式...)
有沒有一種方法可以輕松地進行響應我的問題的查詢?
謝謝
這種方法對mongodb不利。您應該創建一個包含所有數據的集合,並且僅進行一個查詢。
這非常重要,因為:
如果無法遷移到一個收集模式,則可能應該執行以下操作:
var _ = require("underscore")._;
function get_all(cb) {
stops.find({}, function(err, stps, cb) {
stop_time.find({}, function(err, stptime) {
var all = _.map(stps, function(e) {
e.trip_id = stptime[e.stop_id].trip_id;
return e;
});
trips.find({}, function(err, trips) {
all = _.map(all, function(e) {
e.route_id = trips[e.trip_id].route_id;
return e;
});
route.find({}, function(err, routes) {
all = _.map(all, function(e) {
e.route_name = routes[e.route_id].route_name;
return e;
});
cb(all)
});
});
});
});
}
請注意,如果數據庫中有大量數據,那么您可能應該使用游標。 http://mongoosejs.com/docs/api.html#querystream_QueryStream
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.