# Syntax

## 기본 구문

### Create Index

* create\_index(\[(‘index\_name’, order)])&#x20;
  * Creates an index on this collection.

    ```
    my_collection.create_index([(‘address’, 1)])
    ```

### Show Index

* index\_information()
  * Get information on collections’s indexes.

    ```python
    my_collection.index_information()
    ```

### Drop Index

* drop\_index (\[(‘index\_name’, order)])&#x20;
  * Drops the specified index on this collection.
  * To drop all indexes on this collection, use drop\_indexes().

    ```python
    my_collection.drop_index([(‘address’, 1)])
    ```

### Compound Index

* Create indexes on more than one field.
* ```
  my_collection.create_index([
  (‘name’, pymongo.DESCENDING),
  (‘address’, pymongo.ASCENDING)])
  ```

{% hint style="info" %}
PyMongo에서 가독성을 위해 값을 제공하고 있다. 아래는 같은 뜻으로 이해하면 되겠다.

pymongo.ASCENDING = 1, pymongo.DESCENDING = -1
{% endhint %}

###

### Indexing on Embedded Document

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

  ```python
  collection.create_index([('parent.child', pymongo.ASCENDING)])
  ```
* To use the index to search for specific array elements efficiently.

  ```python
  collection.create_index([('items.name', pymongo.DESCENDING)])
  ```

## Indexing Option

### Unique Indexes

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

  ```python
  collection.create_index([('key_1', 1)], unique=True)
  ```

### Sparse Indexes

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

  ```python
  collection.create_index([('key_2', 1)], sparse=True)
  ```

### Unique & Sparse

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

  ```python
  collection.create_index([(key_3', 1)], unique=True, sparse=True)
  ```

### Hint

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

  ```python
  collection.find().sort([('key_4', 1)]).hint([('key_4', 1)])
  ```
