2014-07-17 73 views
0

我有的ObjectId的陣列一個文件:mongomapper關聯跳過重複

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

在該陣列I存儲不同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」設置爲不同對象http://en.wikipedia.org/wiki/Set_(mathematics) 的獲取對於用戶列表與條款A $上的用戶集合的基礎查詢, 看到http://docs.mongodb.org/manual/reference/operator/query/in/

對於@ task.userlist協會,將只得到用戶集合中匹配的文件在第$, 用戶採集是主要的「主題」。 有來自

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

self.user_id.collect |user_id| do User.where(:user_id => user_id).first; end 
一個顯著的語義差別

爲了從前一個查詢中獲得「重複」,您將不得不在用戶集合012xx中嚴重出現重複的文檔。 ;-)

希望這可以幫助你理解。