2014-09-29 54 views
0

在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進行接口

回答

1

您正在尋找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