是否有一个命令可以通过mongo shell中的javascript使用,用于判断我的mongodb中是否存在特定的索引.我正在构建一个脚本文件来创建索引.我希望如果我多次运行这个文件,那么就不会重新创建已经存在的索引.

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

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

推荐答案

在MongoDB中创建索引是一个幂等操作.因此,运行db.names.createIndex({name:1})只会在索引不存在的情况下创建索引.

createIndex()的别名(从MongoDB 3.0开始)是101,这更清楚地说明了createIndex()的实际用途.


Edit:


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

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

Mongodb相关问答推荐

从两个相连的文件中获取电话和邮箱的渠道是什么?

数组相等条件返回的文档多于与相等匹配的文档:MongoDB

MongoDB聚合如何对对象数组中的值求和

带dropTarget的MongoDB renameCollection命令是原子的吗

如何在 kubernetes 中获取分片 mongodb 的备份

从嵌套数组中 id 匹配的另一个集合中获取所有字段

CouchDB 或 MongoDB 中的哪一个适合我的需求?

System.FormatException occurred in MongoDB.Bson.dll - XXX is not a valid 24 digit hex string

MongoDB C# 驱动程序 2.0 InsertManyAsync 与 BulkWriteAsync

Meteor 方法与deny/allow 规则

.insertOne 不是函数

mongod 和 mongo 命令在 Windows 10 上不起作用

如何使用 -number 后缀对字符串进行 MongoDB 查询排序?

如何在 mongodb 本机驱动程序中对 find() 进行字段 Select ?

MongoDB $or 查询

有没有办法自动更新 MongoDB 中的两个集合?

MongoDB 日志(log)文件和 oplog 有何不同?

mongo - Ruby连接问题

mongoose:按字母顺序排序

findOneAndUpdate 中的文档未更新