2014-04-14 2 views
0

저는 평안한 웹 API를 작성하려고하는데, 커뮤니티라는 콜렉션이 있는데, 10 개의 필드가 있습니다. 그러나 GetCommunityAPI 호출에서 필자는 모바일 장치에 필요한 정보 만 전달하려고합니다.MongoID가 포함 된 MongoDB Find Query에서 소수의 필드를 가져옵니다.

나는이 blog example 언급 한,이

$db->users->find({}, {username => 1}); 

내가

@[email protected]({},{:username=>1}) 

나의 Mongoid 검색을 작성한 다음 MongoDB의 쿼리를 제안했다 그러나 이것은 나에게 그것이라고 오류가 있습니다 ID가 {} 인 유효한 문서를 찾을 수 없습니다.

나는 또한 시도했습니다.

@[email protected]({:username=>1}) 

그러나 username 만 반환하는 대신 다른 필드를 null로 만드는 모든 것을 반환합니다.

{"_id":"534186e5414fc34bc5000002","ad":null,"ae":null,"cat":null...and so on} 

제 질문은 API 호출을 가장 효율적으로 만드는 것입니다. 모바일 데이터에 대한 최소한의 양을 소모하는 것은 가능 내 모든 API의 전송에만 유효 정보를 만드는 것이 다음과 같은 형식

{"_id":"534186e5414fc34bc5000002"} 

이러한 접근 방식에 MongoDB를에서 데이터를 가져 보내고, 모바일 네트워크는 친절입니다. 하나의 API 호출에서 약 1000 개의 객체를 기대합니다.

또한이 출력물을이 형식으로 가져올 수 있습니까?

[{"_id":"534186e5414fc34bc5000002","un":"Name"},{"_id":"534186e5414fc34bc500000‌​3","un":"Dummy"}] 
+0

체크 아웃 http://stackoverflow.com/questions/7911014/activerecord-find-and-only-return-selected-columns/12844304#12844304 –

답변

0

mongo 자체를 사용하면 null 값을 반환합니다. mongoid 3에서 pluck 메서드를 사용 해봤습니까?

Collection.all.pluck(:username) 
+0

감사합니다,하지만 하나의 컬럼 만이 작동합니다. 만약 내가 여러 열을 가져올 필요가 ?? '[{ "_id": "534186e5414fc34bc5000002", "un": "이름"}, { "_ id": "534186e5414fc34bc5000003", "un": "Dummy"}]'와 같은. 나는 Rails 3과 Mongoid 3를 사용하고 있습니다. –