Ruby on rails MongoMapper和;“联接表”;具有属性

Ruby on rails MongoMapper和;“联接表”;具有属性,ruby-on-rails,mongodb,mongomapper,Ruby On Rails,Mongodb,Mongomapper,我有物品清单。这些项目可以属于多个列表。这可以通过定义多对多关系轻松实现 class List include MongoMapper::Document key :item_ids, Array many :items, :in => :item_ids end 但我也希望这些清单能有序排列。一个项目可以在一个列表的索引2上,在另一个列表的索引4上。通常我会使用带有“position”字段的联接表,但我不知道如何使用MongoMapper来完成这样的事情,因为每个人似乎都

我有物品清单。这些项目可以属于多个列表。这可以通过定义多对多关系轻松实现

class List
  include MongoMapper::Document

  key :item_ids, Array
  many :items, :in => :item_ids
end
但我也希望这些清单能有序排列。一个项目可以在一个列表的索引2上,在另一个列表的索引4上。通常我会使用带有“position”字段的联接表,但我不知道如何使用MongoMapper来完成这样的事情,因为每个人似乎都建议不要在没有SQL的环境中使用联接表(这很有道理)


在MongoDB中使用联接表是一个好主意还是使用另一种机制来实现这一点?还有要点:如何在MongoMapper中实现这一点?

item\u id
是一个数组。因此,它将是自然有序的-您只需按照您希望的顺序将项目插入到
项目关联中即可。如果要重新排序,只需按照某些条件对
项目\u id
数组进行排序并保存文档,或者在从数组中使用项目时对其进行排序

# When consuming the list
@list.items.sort_by &:name

# Or if you want to persist the order
@list.item_ids = @list.items.sort {|item| ... }.map(&:id)
@list.save

嘿,克里斯,这是我第一次尝试,但MongoMapper似乎对id进行了重新排序。最后,我查看了我的数据库设计,并重新编写了它,以更好地适应nosql解决方案,但问题仍然存在。我将尝试用我使用的测试更新我的问题。这听起来像个bug!应保留数组顺序。如果您可以重现该问题,请在