MongoDB 索引

  • 索引

    索引支持查询的有效解析。没有索引,MongoDB必须扫描集合中的每个文档以选择与查询语句匹配的那些文档。这种扫描效率极低,需要MongoDB处理大量数据。索引是特殊的数据结构,以易于遍历的形式存储数据集的一小部分。索引存储特定字段或一组字段的值,该值由索引中指定的字段值排序。
  • createIndex()方法

    要创建索引,您需要使用MongoDB的createIndex()方法。
    createIndex()方法的基本语法如下
     
    >db.COLLECTION_NAME.createIndex({KEY:1})
    
    此处的key是要在其上创建索引的字段的名称,而1代表升序。要以降序创建索引,您需要使用-1。
    示例
     
    db.empDetails.createIndex({"uid":1});
    {
      "createdCollectionAutomatically" : false,
      "numIndexesBefore" : 1,
      "numIndexesAfter" : 2,
      "ok" : 1
    }
    
    在createIndex()方法中,您可以传递多个字段,以在多个字段上创建索引。
     
    db.empDetails.createIndex({"uid":1,"title":-1});
    
    此方法还接受选项列表(可选)。以下是列表-
    参考:https://docs.mongodb.com/manual/reference/method/db.collection.createIndex/index.html
  • dropIndex()方法

    您可以使用MongoDB的dropIndex()方法删除特定索引。
    DropIndex()方法的基本语法如下
     
    >db.COLLECTION_NAME.dropIndex({KEY:1})
    
    此处的key是您要在其上创建索引的文件的名称,而1代表升序。要以降序创建索引,您需要使用-1。
    示例
     
    >db.empDetails.dropIndex({"uid":1});
    { "nIndexesWas" : 2, "ok" : 1 }
    
    
    参考:https://docs.mongodb.com/manual/reference/method/db.collection.dropIndex/index.html
  • dropIndexes()方法

    此方法删除集合上的多个(指定)索引。
    dropIndexes()方法的基本语法如下
     
    >db.COLLECTION_NAME.dropIndexes()
    
    假设我们在命名的mycol集合中创建了2个索引,如下所示。
    示例
     
    db.empDetails.createIndex({"uid":1,"title":-1});
    
    以下示例删除了上面创建的mycol索引-
     
    db.empDetails.dropIndexes({"uid":1,"title":-1});
    
    参考:https://docs.mongodb.com/manual/reference/method/db.collection.dropIndexes/index.html
  • getIndexes()方法

    此方法返回集合中所有索引的描述。
    getIndexes()方法的基本语法如下
     
    db.COLLECTION_NAME.getIndexes()
    
    假设我们在命名的mycol集合中创建了2个索引,如下所示。
    示例
     
    db.empDetails.createIndex({"uid":1,"title":-1});
    
    以下示例检索集合mycol中的所有索引-
     
    db.empDetails.getIndexes();
    [
      {
        "v" : 2,
        "key" : {
          "_id" : 1
        },
        "name" : "_id_"
      },
      {
        "v" : 2,
        "key" : {
          "uid" : 1,
          "title" : -1
        },
        "name" : "uid_1_title_-1"
      }
    ]
    
    参考:https://docs.mongodb.com/manual/reference/method/db.collection.getIndexes/index.html