簡體   English   中英

mongoDB中的多個查詢

[英]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不利。您應該創建一個包含所有數據的集合,並且僅進行一個查詢。

這非常重要,因為:

  1. 沒有交易
  2. 沒有加入
  3. 一個文檔上只有原子操作
  4. 您將無法使用聚合框架

如果無法遷移到一個收集模式,則可能應該執行以下操作:

    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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM