Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails mongomapper关联跳过重复项_Ruby On Rails_Ruby_Mongodb_Mongodb Query_Mongomapper - Fatal编程技术网

Ruby on rails mongomapper关联跳过重复项

Ruby on rails mongomapper关联跳过重复项,ruby-on-rails,ruby,mongodb,mongodb-query,mongomapper,Ruby On Rails,Ruby,Mongodb,Mongodb Query,Mongomapper,我有一个ObjectId数组的文档: Class Task key :user_id, Array many :userlist, class_name: 'User', :in => :user_id 在该数组中,我存储了不同的user_id值,有时是重复的。我可以看到重复的用户id正在使用: @task.user_id.each do |z| puts z end 但当我使用以下方法获取和关联数据时: @task.userlist.each do |z| puts

我有一个ObjectId数组的文档:

Class Task
  key :user_id, Array
  many :userlist, class_name: 'User', :in => :user_id
在该数组中,我存储了不同的user_id值,有时是重复的。我可以看到重复的用户id正在使用:

@task.user_id.each do |z|
  puts z
end
但当我使用以下方法获取和关联数据时:

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

我没有得到重复项:(,只有唯一id被关联。为什么?

从关联的定义来看,您看到的是完全正确的 以及与“in”子句匹配的基础查询。 让您重新思考“in”是不同对象的“in-set” fetch for userlist对用户集合有一个底层查询,其中包含$in子句, 看

对于@task.userlist关联,您将只获得用户集合中与$in子句匹配的文档, 用户集合是主要的“主题” 在语义上与

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

self.user_id.collect |user_id| do User.where(:user_id => user_id).first; end
为了从前一个查询中获取“副本”,用户集合中必须有重复的文档, 严肃地说.-)

希望这有助于你的理解