# Basic Index

## 기본 구문

### Create Index

* createIndex{field: order}&#x20;
  * Creates an index on this collection.

    ```
    db.my_collection.createIndex({address: 1})
    ```

### Show Index

* getIndexes()
  * Get information on collections’s indexes.

    ```python
    db.my_collection.getIndexes()
    ```

### Drop Index

* dropIndex{field: order}
  * Drops the specified index on this collection.
  * To drop all indexes on this collection, use dropIndexes().

    ```python
    db.my_collection.dropIndex({address:1})
    ```

### Compound Index

* Create indexes on more than one field.
* ```
  db.my_collection.createIndex({name: -1, address: 1})
  ```

### Indexing on Embedded Document

* Embedded document와 Array에 인덱스를 사용하기 위해서는 아래와 같은 구문으로 사용하면 된다. 개념은 똑같기 때문에 이해하는 것에는 무리없을 것으로 보인다.
* Indexes can be created on keys in embedded documents.

  ```python
  db.collection.createIndex({'parent.child': 1})
  ```
* To use the index to search for specific array elements efficiently.

  ```python
  db.collection.createIndex({'items.name': -1})
  ```

## Indexing Option

### Unique Indexes

* Unique indexes guarantee that each value will appear at most once in the index

  ```python
  db.collection.createIndex({'key_1': 1}, {unique: true})
  ```

### Sparse Indexes

* Sparse indexes only contain entries for documents that have the indexed field skipping documents without it

  ```python
  db.collection.createIndex({'key_2': 1}, {sparse: true})
  ```

### Unique & Sparse

* Unique indexes guarantee that each value will appear at most once in the index

  ```python
  db.collection.createIndex({key_3: 1}, {unique: true, sparse: true})
  ```

### Hint

* To override MongoDB’s default index selection and query optimization process.

  ```python
  db.collection.find().sort({'key_4': 1}).hint({'key_4': 1})
  ```
