当我尝试查询Mongoid标准的结果并且仅保留字段不同的文档时,我感到非常沮丧。这样做:
Books.all.distinct(:name)
..只返回名称字段,而不是文档。
此处使用另一个问题中所述的uniq
循环也不适合我。
Books.all.uniq{|x| x.name} # Returns non-unique results
我在这里缺少什么?
答案 0 :(得分:0)
我不确定我完全理解你想要达到的目标?数据库中的“名称”字段是否对其有唯一约束?
如果是这样,您只需检索所有书籍名称,即可自行检索您称为基础对象的书籍。
如果没有,每个名字都会有多本书,没有必要抓住。也许您正在寻找的是groupby函数?要将所有具有相同名称的书籍分组,您可以调用Books.all.group_by{|book| book.name}
,但由于这是针对Web服务器而不是数据库级别运行,因此对于任何合理数量的记录来说都会非常慢。
您最好的选择可能是执行以下操作之一:
答案 1 :(得分:0)
OP,你的问题是你希望每本书都有一个独特的名字。
这个问题就是假设你有98本独特的书籍和2本同名的书籍
如果你问你的数据库:“给我每一本名字都很独特的书”它会找到前98本书,然后它会进入最后两本。
这两本同名的书应该归还哪一本?由于细节水平对这个问题没有正确答案,所以像假设的.uniq这样的东西没有意义。