2014-05-17 2 views
1

내가 가장 저렴한 비용과 최고의 성능을 다음 달성하기 위해 노력하고있어 : 가 (문서의 수백만을 생각하십시오) :이 컬렉션이
: Followhip추종자의리스트를 취득하고 현재 사용자는이를 다음과 어떠했는지 여부

{ 
“followee”: 12345, 
“follower”:  54321, 
“start”:  ISODate(“2013-08-21T12:34:00”), 
“last”:  ISODate(“2013-08-23T06:00:00”), 
“end”:  ISODate(“2013-08-23T07:50:23”) 

} 마지막

follower, 나는이 모든 추종자 (10에 한함)받을 프로필 페이지에 지금 followee
다음 마지막 검사 날짜입니다, 현재 사용자가 추종자를 따르는 지 확인하고 싶습니다.
순진한 해결책은 'follower'= 현재 사용자이고 'followee'= 추종자, 결과가 비어 있으면 false를 반환하고 그렇지 않으면 true입니다.

내 질문은 : 더 좋은 해결책이 있습니까? MAP 줄이거 나 뭔가처럼, 나는 MongoDB의에서 초보자, 그래서 어쩌면 누군가가 여기
감사합니다 당신은 그래서 당신은 열 개 쿼리를 만들 필요가 없습니다 $in operator을 사용할 수 있습니다

답변

1

많은 나를 도울 수 있지만, 단 하나, 예

// currentProfile.displayedFollowerIds = [ 32434, 54354, 656536, ... ] 
db.followers.find({ followee : currentUser.Id, 
        follower: {$in : currentProfile.displayedFollowerIds } }); 

MongoDB의 Map/Reduce는 임의 (ad-hoc) 쿼리를 위해 만들어지지 않았습니다. Map/Reduce 작업은 MongoDB에서 상당한 오버 헤드를 가지며 쿼리처럼 사용되어서는 안됩니다.

복잡한 쿼리가있는 경우 aggregation framework을 볼 수 있습니다.

+0

+1은 쿼리 번호를 10에서 1로 줄입니다. – Sekai

관련 문제