gpt4 book ai didi

mongodb - 检查MongoDB中是否存在索引

转载 作者:IT老高 更新时间:2023-10-28 11:06:19 27 4
gpt4 key购买 nike

有没有我可以通过 mongo shell 中的 javascript 使用的命令来检查特定索引是否存在于我的 mongodb 中。我正在构建一个将创建索引的脚本文件。我希望如果我多次运行此文件,则不会重新创建已经存在的索引。

我可以使用 db.collection.getIndexes() 来获取我的数据库中所有索引的集合,然后构建一个逻辑来忽略已经存在的那些但我想知道是否有命令来获取索引然后忽略创建索引的脚本。比如:

If !exists(db.collection.exists("indexname")) 
{
create db.collectionName.CreateIndex("IndexName")
}

最佳答案

在 MongoDB 中创建索引是一种幂等操作。所以运行 db.names.createIndex({name:1}) 只会在索引不存在时创建索引。

createIndex() 的已弃用(从 MongoDB 3.0 开始)别名是 ensureIndex(),这对于 createIndex() 确实如此。


编辑:感谢 ZitRo 在注释中澄清调用 createIndex() 与现有索引具有相同名称但选项不同将引发错误 MongoError: Index with name: **indexName** already exists使用不同的选项,如 this question 中所述.


如果您有其他检查原因,则可以通过以下两种方式之一访问当前索引数据:

  1. 从 v3.0 开始,我们可以使用 db.names.getIndexes() 其中 names 是集合的名称。 Docs here .
  2. 在 v3.0 之前,您可以访问 system.indexes 集合并执行 find as bri describes below .

关于mongodb - 检查MongoDB中是否存在索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35019313/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com