2014-09-03 7 views
0

모두! ,MongoDB 집계 : 결과에서 필드를 추출하는 방법

"result" : [ 
    { 
     "_id" : "531d84734031c76f06b853f0" 
    }, 
    { 
     "_id" : "5316739f4031c76f06b85399" 
    }, 
    { 
     "_id" : "53171a7f4031c76f06b853e5" 
    }, 
    { 
     "_id" : "531687024031c76f06b853db" 
    }, 
    { 
     "_id" : "5321135cf5fcb31a051e911a" 
    }, 
    { 
     "_id" : "5315b2564031c76f06b8538f" 
    } 
], 
"ok" : 1 

데이터는 단지 내가 찾고 있는지,하지만 난 한 걸음 더 나아가 그것을 만들고 싶어 :

내가 MongoDB의 집계에 새로 온

는 집계 후, 드디어 결과를 얻을 수 내 데이터는 다음과 같이 표시됩니다 희망 :

"result" : [ 
    "531d84734031c76f06b853f0", 
    "5316739f4031c76f06b85399", 
    "53171a7f4031c76f06b853e5", 
    "531687024031c76f06b853db", 
    "5321135cf5fcb31a051e911a", 
    "5315b2564031c76f06b8538f" 
], 
"ok" : 1 

예, 그냥 일반 문자열 배열에있는 모든 고유 ID를 얻으려면, 내가 할 수 있나요? 어떤 도움을 주시면 감사하겠습니다!

+0

질문 표시 –

답변

2

모든 MongoDB 쿼리는 결과 문서에서 "키/값"쌍을 생성합니다. 모든 MongoDB 내용은 기본적으로이 양식의 BSON 문서이며, 구현 된 언어로 드라이버에 의해 원래 코드 형식으로 다시 "변환"됩니다.

그래서 집계 프레임 워크만으로는 절대로 베어를 생성하지 않습니다. 원하는 값의 배열. 결국이

var result = db.collection.aggregate(pipeline); 

var response = result.result.map(function(x) { return x._id }); 

는 또한 쉘과 원하는 옵션의 기본 동작은 집계 결과가 실제로 커서로 돌려 주어집니다 있습니다 만 배열입니다하지만 당신은 언제나, 결과의 배열을 변환 할 수 있습니다 MongoDB 2.6 이후부터. 이것은 별개의 문서가 아닌 목록 형식이므로 다음과 같이 다르게 처리하게됩니다.

var response = db.collection.aggregate(pipeline).map(function(x) { 
    return x._id; 
}) 
+0

감사합니다, Neil! 이제는 메커니즘으로 분명 해졌고 내 문제를 해결했습니다. 정말로 감사드립니다! – crystaldust