Mongodb:快速列出索引字段的所有值

问题描述:

在mongodb中,我希望能够快速列出所有索引值。对于瞬间可以说我有FOO的众多藏品:Mongodb:快速列出索引字段的所有值

public class Foo{ 

    @ID 
    private ObjectID id; 
    @Indexed 
    private List<String> bars; 
    @Indexed List<String> bazs; 
    ... 
} 

有可能是在酒吧和巴兹重复,这样迭代通过不断foo和看着酒吧清单将是低效的,因为我会花大部分的我的时间在重复。

如果我想快速列出所有'bars'的值而不必查看每个Foo对象,我可以这样做吗?由于它们被编入索引,因此必须有一个表格,并且所有索引都以易于重复的方式列出。但是,我似乎无法找到一个mongodb命令来做到这一点?或者更好一个morphia命令,因为我使用java来与mongo进行接口

您正在寻找distinct,它也适用于列表/数组。如果可用的话,MongoDB将使用索引。

不幸的是这个功能isn't yet implemented in Morphia,但你可以做的Java驱动程序如下:

DBCollection c = collection; 
List bars = c.distinct("bars"); 

对于更复杂的例子中看到的unit test for this feature

+0

这是不同的发生在java端或mongo端?听起来像是java的一面? – dsollen 2014-09-30 12:15:40

+0

Plain MongoDB:http://docs.mongodb.org/manual/reference/method/db.collection.distinct/ – xeraa 2014-09-30 12:25:34