2012-06-04 2 views
1

MongoDB를 사용하는 Rails 3 앱과 Mongoid를 ORM으로 사용하고 있습니다. 컬렉션 내의 특정 필드를 쿼리하고 싶습니다.레일즈 콘솔에서 특정 MongoDB 컬렉션 필드를 어떻게 쿼리합니까?

특정 컬렉션의 모든 레코드를 쿼리하려면 User.all.to_a을 ActiveRecord의 User.all과 동일하게 사용하십시오.

이제 컬렉션 내의 모든 레코드를 쿼리하고 싶지만 특정 필드 만 출력하고 싶습니다. 이 경우 모든 사용자 이름을보고 싶습니다. 어떻게해야합니까?

나는

답변

1

내가 mongoid에 대한 새로운 문서를 찾을 수 없습니다 ... 나는 Mongoid 문서에 바로이 응시했고 뭔가를 놓친 거지 확신하지만, 여기에 빠른 링크입니다 이전 2.xx 문서를 가리키는 only.

User.all.only(:name).to_a 
+1

이 나를 위해 작동하지 않았다 ...'User.all.only 모두 (: 명) .to_a'와'User.only (이름) .to_a을

은 기본적으로 당신이 할 필요가 '모든 관련 필드를 포함하여 모든 사용자 문서의 배열을 덤프합니다. 'User.all.distinct (: name)'과 같은 것을하면 적절한 : name 필드의 출력 만 제공합니다. 당신의 제안이 왜 효과가 없는지 확실하지 않습니다. 그것은 다음과 같을 것입니다 ... – Joe

+0

몽고이 (Mongoid)에서 작동하는 방법입니다. 필드 만 가져 오지 만 값은 채워지지만 각 필드에는 채워진 필드 만 있습니다. 배열을 항상 매핑 할 수는 있지만 컨텍스트에 따라 비효율적 일 수 있습니다. 뭔가 :'User.only (: name) .all.to_a.map {| u | u.name}'. – theTRON

+0

'only'를 사용하는 @ J.Venator에서는 지정된 필드 만이 문서 형식으로 db에서 반환되고 mongoid는 Model 인스턴스로 래핑합니다. 'distinct'는 지정된 값의 배열만을 반환합니다. 나는 그 질문을 오해 할 수도 있고 당신은 'distinct' – rubish