sql >> データベース >  >> NoSQL >> MongoDB

mongodbクエリ内の複数のクエリ

    Node.jsの動作は非同期であり、プログラマーはこの動作を考慮してコーディングする必要があります。コールバックまたはpromiseまたはフロー制御ライブラリを使用します。プログラムで、mongoクエリをループ内に配置しました。これはクエリの悪いアプローチです。代わりに、複数回クエリを実行する場合は、$in演算子を使用してください。コードのパフォーマンスを最適化し、応答送信の問題も解決します。

    var resultSet = [];
            db.get('busstopcollection').find({id_bus_stop: parseInt(req.body.busstopid)}, function(e, docs){
                if(e || docs.length === 0) {
                    console.log("Sorry, wrong id.");
                    return e;
                }
                var bus_ids = [];
                for(var m=0; m<docs.length; m++){
                    var auxRes = {};
                    auxRes.id_bus = docs[m].id_bus; 
                    bus_ids.push(parseInt(docs[m].id_bus)); // collect all ids 
                    auxRes.id_bus_stop = docs[m].id_bus_stop;
                    auxRes.coord_x = docs[m].coord_x;
                    auxRes.coord_y = docs[m].coord_y;               
                    auxRes.id_bus_variation = docs[m].id_bus_variation;
                    resultSet.push(auxRes);         
    
                }
                // Query at one time for all document 
                db.get('buscollection').find({id_bus: {$in : bus_ids}}).toArray( function(e, busDocs){
                        // Now find and merge in one go
                        busDocs.forEach(function(eachBusDoc){
                            for(var i=0,len = resultSet.length;i< len;i++){
                                if(resultSet[i].id_bus == busDocs.id_bus ){
                                    resultSet[i].s_origin_description = eachBusDoc.s_origin_description;
                                    resultSet[i].s_destination_description = eachBusDoc.id_destination_description;
                                }
                            }
                        });             
                           res.send(JSON.stringify(resultSet));
                    });
            });
    


    1. Dockerコンテナからホストにワイルドカードを使用してフォルダをコピーします

    2. ストラップ:デバッグ⛔️サーバーを正しく起動できませんでした

    3. MongoDBがクエリに非常に類似している(正確ではない)複合インデックスを使用できないのはなぜですか?

    4. MongoDBは完全に一致する配列を検索しますが、順序は重要ではありません