使用MongoDB的Java中的createIndex()ensureIndex()有什么区别?我用谷歌搜索,但没有得到满意的答案。

最佳答案

更新2:
原始答案以及第一次更新都错误地引用了Mongo Shell文档而不是Java API。

在Java中, DBCollection.ensureIndex() 在2.12版中已弃用,在3.0版中已删除。 DBCollection.createIndex() 是应该使用的一种。

更新:
从3.0.0版开始不推荐使用db.collection.ensureIndex()
现在是db.collection.createIndex()的别名。

原始:createIndex()deprecated since 1.8

它用于在集合上创建索引,而如果该索引尚不存在,则ensureIndex()在指定的字段上创建索引。此外,当我们两次执行createIndex()时,第二次执行只会使失败,而使用ensureIndex()您可以多次调用它,并且不会失败o​​jit_rstrong

在先前版本的mongodb(版本小于2.6)中,关于ensureIndex()的行为又发生了另一件事,如果现有文档的索引条目超过最大索引键长度,则会创建索引,但是Mongodb 不会索引这样的文档,而在最新版本中,不会创建索引。

08-06 04:31