【发布时间】:2016-05-03 08:08:24
【问题描述】:
是否有我可以通过 mongo shell 中的 javascript 使用的命令来检查特定索引是否存在于我的 mongodb 中。我正在构建一个将创建索引的脚本文件。我希望如果我多次运行此文件,则不会重新创建已经存在的索引。
我可以使用 db.collection.getIndexes() 来获取我的数据库中所有索引的集合,然后构建一个逻辑来忽略已经存在的那些但我想知道是否有命令来获取索引然后忽略创建索引的脚本。比如:
If !exists(db.collection.exists("indexname"))
{
create db.collectionName.CreateIndex("IndexName")
}
【问题讨论】:
-
在索引已经存在时调用
createIndex是一个空操作,所以真的不需要检查。 -
@JohnnyHK:如果您没有写权限,这不是无操作。在这种情况下,代码将抛出错误
not authorized to execute command { insert: "system.indexes" ...,而不是静默失败。
标签: mongodb