2016-12-13 1 views
0

을 많이 복용되고, 내가 일을 몇 초 정도 걸립니다 집계 파이프 라인을 실행 그것은 지금 시간 총 절반이 아직 실행 된 것

db.aarhus_ways.aggregate([{$lookup:{from: "aarhus_nodes",localField: 
"node_refs",foreignField: "id",as: "nodes"}},{"$project": 
{"id":1,"name":1,"highway":1,"nodes.pos":1}} 
,{"$out":"nodes"}]) 

: 일이 죽은 느려질 때 컬렉션에 출력, 즉이다. 데이터가 MongoDB를 취하는 덴마크 오르후스의 도시 (바이트)에 관한 가정이 정상입니다 :

db.aarhus_ways.totalSize() --> 7991296 = nearly 8 MB 
db.aarhus_nodes.totalSize() --> 35987456 = nearly 36 MB 

답변

0

먼저이 지역에 인덱스를 생성해야하고 단지 실행 명령으로 foreignField :

db.aarhus_ways.createIndex({node_refs:1}) 
db.aarhus_nodes.createIndex({id:1}) 

다음 명령을 실행하십시오 :

db.aarhus_ways.aggregate([{ 
    $lookup: { 
     from: "aarhus_nodes", 
     localField: "node_refs", 
     foreignField: "id", 
     as: "nodes" 
    } 
},{ 
    "$project": { 
     "id":1, 
     "name":1, 
     "highway":1, 
     "nodes.pos":1 
    } 
},{ 
    "$out":"nodes" 
}])