创建集合时在MongoDB上创建索引(Java)

创建集合时在MongoDB上创建索引(Java),java,mongodb,Java,Mongodb,我目前正在使用MongoDB及其Java驱动程序。除此之外,我还有RESTWebServices,它允许客户端在MongoDB中创建集合和推送文档 我想在Mongo中的特定必填字段上自动创建索引。首先,我看了一下,结果发现它被弃用了,现在推荐使用这个方法 所以我可以做一个非常简单的方法如下: private void setCollection(String collection) { this.collection = mongoDB.getDataBase().getColl

我目前正在使用MongoDB及其Java驱动程序。除此之外,我还有RESTWebServices,它允许客户端在MongoDB中创建集合和推送文档

我想在Mongo中的特定必填字段上自动创建索引。首先,我看了一下,结果发现它被弃用了,现在推荐使用这个方法

所以我可以做一个非常简单的方法如下:

private void setCollection(String collection) {
        this.collection = mongoDB.getDataBase().getCollection(collection);
        this.collection.createIndex("key");
}
根据索引的数量,方法createIndex()不会重建现有索引

所以我的问题是:我的方法优雅吗?createIndex()是否正在对MongoDB进行附加调用,以确保已创建索引?这可能会导致性能问题


感谢您抽出时间。

如果您为用户刚刚创建的集合编制索引,我不会太在意性能问题。反正它可能是空的,不是吗?对于现有集合,您不必检查它,因为您在初始化时创建了索引。感谢您的回复。问题是,当我设置集合时,我不知道集合是否已经存在。我的REST服务上的每个请求都会调用我的方法setCollection(),因此客户端可以请求一些旧的或新的集合。我真的不知道,我是否理解这个问题。当您从Mongo获得集合时,它将不存在或已经存在。如果不存在,则首先创建集合,然后创建索引。问题是,当我从MongoDB驱动程序调用getCollection()方法时,无论它是否存在,它都会返回一个集合。如果必须,驱动程序将自行处理集合的创建。但也许我可以调用createCollection()方法,如果集合已经存在,它将抛出一个异常。如果没有,我可以创建集合和索引。我想那会有用的。是的,那也是个好主意。我将尝试这两种解决方案,并让您随时了解最新情况。谢谢。如果你为用户刚刚创建的集合编制索引,我不会太在意性能问题。反正它可能是空的,不是吗?对于现有集合,您不必检查它,因为您在初始化时创建了索引。感谢您的回复。问题是,当我设置集合时,我不知道集合是否已经存在。我的REST服务上的每个请求都会调用我的方法setCollection(),因此客户端可以请求一些旧的或新的集合。我真的不知道,我是否理解这个问题。当您从Mongo获得集合时,它将不存在或已经存在。如果不存在,则首先创建集合,然后创建索引。问题是,当我从MongoDB驱动程序调用getCollection()方法时,无论它是否存在,它都会返回一个集合。如果必须,驱动程序将自行处理集合的创建。但也许我可以调用createCollection()方法,如果集合已经存在,它将抛出一个异常。如果没有,我可以创建集合和索引。我想那会有用的。是的,那也是个好主意。我将尝试这两种解决方案,并让您随时了解最新情况。非常感谢。