如何从Mongoid标准中获得明显的结果?

时间:2012-06-19 21:10:48

标签: mongoid

当我尝试查询Mongoid标准的结果并且仅保留字段不同的文档时,我感到非常沮丧。这样做:

Books.all.distinct(:name)

..只返回名称字段,而不是文档。

此处使用另一个问题中所述的uniq循环也不适合我。

Books.all.uniq{|x| x.name} # Returns non-unique results

我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

我不确定我完全理解你想要达到的目标?数据库中的“名称”字段是否对其有唯一约束?

如果是这样,您只需检索所有书籍名称,即可自行检索您称为基础对象的书籍。

如果没有,每个名字都会有多本书,没有必要抓住。也许您正在寻找的是groupby函数?要将所有具有相同名称的书籍分组,您可以调用Books.all.group_by{|book| book.name},但由于这是针对Web服务器而不是数据库级别运行,因此对于任何合理数量的记录来说都会非常慢。

您最好的选择可能是执行以下操作之一:

答案 1 :(得分:0)

OP,你的问题是你希望每本书都有一个独特的名字。

这个问题就是假设你有98本独特的书籍和2本同名的书籍

如果你问你的数据库:“给我每一本名字都很独特的书”它会找到前98本书,然后它会进入最后两本。

这两本同名的书应该归还哪一本?由于细节水平对这个问题没有正确答案,所以像假设的.uniq这样的东西没有意义。