2014-07-17 7 views
0

를 건너 뜁니다 : 나는 다른 USER_ID 값을 저장하는 배열에mongomapper 협회가 나는 ObjectId가의 배열을 가진 문서가 중복

Class Task 
    key :user_id, Array 
    many :userlist, class_name: 'User', :in => :user_id 

을, 때로는 중복. 내가 사용하는 중복 USER_ID의를 볼 수 있습니다

@task.user_id.each do |z| 
    puts z 
end 

을하지만 가져올 때 사용하여 데이터를 연결 :

@task.userlist.each do |z| 
    puts z.name 
end 

나는 중복 :(만의 고유 ID가의가 왜

관련 취득을하지 않습니다.?
+0

심각하게? 아무도? –

답변

1

당신이보고있는 것은 연관의 정의와 "in"절과 일치하는 기본 검색어와 정확히 일치합니다. "in"을 "in in"으로 생각하면 새로 고칩니다 당신이 일치하는 사용자 컬렉션에서 문서 만 얻을 것이다, 는 @의 task.userlist 협회에 대한

http://docs.mongodb.org/manual/reference/operator/query/in/를 참조하십시오 사용자 목록에 대한 가져 오기 http://en.wikipedia.org/wiki/Set_(mathematics) 절 달러 (A $)와 사용자 수집에 대한 기본 쿼리를 가지고 객체 절에 $는 사용자 모음은 기본 "대상"입니다.

self.user_id.collect |user_id| do User.where(:user_id => user_id).first; end 

User.where(:user_id.in => self.user_id) 

에서 상당한 의미 차이가있다

이전 쿼리에서 "중복"을 가져 오려면 사용자 컬렉션에 중복 된 문서가 있어야합니다 ( ). ;-)

귀하의 이해를 돕기를 바랍니다.