

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# \$1unwind
<a name="unwind"></a>

El `$unwind` operador se utiliza para deconstruir un campo de matriz a partir de los documentos de entrada para generar un documento para cada elemento. Esto puede resultar útil cuando desee realizar operaciones en los elementos individuales de una matriz, como filtrar, ordenar o transformar los datos.

**Parámetros**
+ `path`: La ruta al campo de matriz que se va a desenrollar.
+ `includeArrayIndex`: (opcional) Especifica el nombre del nuevo campo que contiene el índice del elemento de la matriz.
+ `preserveNullAndEmptyArrays`: (opcional) Determina si la operación conserva el documento original cuando el campo de matriz es nulo o es una matriz vacía.

## Ejemplo (MongoDB Shell)
<a name="unwind-examples"></a>

El siguiente ejemplo muestra cómo utilizar el `$unwind` operador para deconstruir un campo de matriz y realizar más operaciones en los elementos individuales.

**Cree documentos de muestra**

```
db.people.insertMany([
  { _id: 1, name: "jon", hobbies: ["painting", "dancing", "singing"] },
  { _id: 2, name: "jane", hobbies: ["reading", "swimming"] },
  { _id: 3, name: "jack", hobbies: [] }
])
```

**Ejemplo de consulta**

```
db.people.aggregate([
  { $unwind: "$hobbies" }
])
```

**Salida**

```
[
  { _id: 1, name: 'jon', hobbies: 'painting' },
  { _id: 1, name: 'jon', hobbies: 'dancing' },
  { _id: 1, name: 'jon', hobbies: 'singing' },
  { _id: 2, name: 'jane', hobbies: 'reading' },
  { _id: 2, name: 'jane', hobbies: 'swimming' }
]
```

## Ejemplos de código
<a name="unwind-code"></a>

Para ver un ejemplo de código para usar el `$unwind` comando, elija la pestaña del idioma que desee usar:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false');
  const db = client.db('test');
  const collection = db.collection('people');

  const result = await collection.aggregate([
    { $unwind: '$hobbies' }
  ]).toArray();

  console.log(result);
  client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false')
    db = client['test']
    collection = db['people']

    result = list(collection.aggregate([
        { '$unwind': '$hobbies' }
    ]))

    print(result)
    client.close()

example()
```

------