2013-07-13 3 views
4
db.users.find(); 

나에게 사용자의 배열을 돌려줍니다 찾을에서 개체 대신 배열을 다시 가져 오기 :MongoDB를 -

[{ 
_id: 123 
name: bob 
},{ 
_id: 456 
name: tom 
}] 

내가 ID로 다른 컬렉션에 사용자를 매핑 할 필요를, 그래서 나는를 좀하고 싶습니다 mongo에서 키가 _id이고 값이 사용자 문서 인 객체. 즉

users = { 
123: {_id: 123, name: bob}, 
456: {_id, 456, name:tom} 
} 

그러면 I 특정 사용자를 찾기 위해 배열을 반복 할 필요없이 그 사용자 객체로부터 직접 액세스 할 수있다.

id = 123; 
user = users[id]; 
+0

이없는 다시 mongod에서이 방법을 제외하고 데이터를 얻을 수있는 방법을 매우 빠르거나 효율적이지 않은 mapreduce를 사용하여 ... 물론 결과를 새로운 콜렉션에 쓸 수 있으므로 단계를 줄일 수 있습니다. –

+1

반환 된 결과를 반복하여 빠른 클라이언트 쪽 인덱스를 작성하는 것이 좋습니다. 초고속이어야합니다. – WiredPrairie

답변

2

당신은 MongoDB의에서이 같은 개체를 얻을 수 있지만, 그것을 직접 구축하는 것은 매우 쉽습니다 :

db.users.find(function (err, docs) { 
    var users = {}; 
    docs.forEach(function (doc) { 
    users[doc._id] = doc; 
    }); 
    do_whatever_you_want_next(users); 
}); 
+0

그래, 그렇게 나쁘지 않다. 집계와 $ 프로젝트를 망쳐 놓고 내가 얻을 수 있는지 알아 보았습니다. – lostintranslation

+0

최신 버전의 mongodb에서는 여전히 가능하지 않습니까? –

+0

@ mandeep_m91, 나는 MongoDB API의 일부가 될 것이라고 생각하지 않는다. –