

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.

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

Nuevo a partir de la versión 4.0.

No es compatible con el clúster de Elastic.

El `$jsonSchema` operador de Amazon DocumentDB se utiliza para filtrar documentos en función de un esquema JSON específico. Este operador le permite consultar documentos que coinciden con un esquema JSON concreto, lo que garantiza que los documentos recuperados cumplan con requisitos estructurales y de tipo de datos específicos.

Al utilizar el operador de consulta de `$jsonSchema` evaluación como parte de la creación de una colección, puede validar el esquema de los documentos que se van a insertar en la colección. Para obtener información adicional, consulte [Cómo utilizar la validación de esquemas JSON](json-schema-validation.md).

**Parámetros**
+ `required`(matriz): especifica los campos obligatorios del documento.
+ `properties`(objeto): define el tipo de datos y otras restricciones para cada campo del documento.

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

En el siguiente ejemplo se muestra el uso del `$jsonSchema` operador para filtrar la `employees` colección y recuperar únicamente los documentos que tengan los `age` campos `employeeId` y`name`, si el `employeeId` campo es del tipo. `string`

**Cree documentos de muestra**

```
db.employees.insertMany([
  { "name": { "firstName": "Carol", "lastName": "Smith" }, "employeeId": "1" },
  { "name": { "firstName": "Emily", "lastName": "Brown" }, "employeeId": "2", "age": 25 },
  { "name": { "firstName": "William", "lastName": "Taylor" }, "employeeId": 3, "age": 24 },
  { "name": { "firstName": "Jane", "lastName": "Doe" }, "employeeId": "4" }
]);
```

**Ejemplo de consulta**

```
db.employees.aggregate([
  { $match: {
    $jsonSchema: {
      required: ["name", "employeeId", "age"],
      properties: { "employeeId": { "bsonType": "string" } }
    }
  }}
]);
```

**Salida**

```
{ "_id" : ObjectId("6908e8b61f77fc26b2ecd26f"), "name" : { "firstName" : "Emily", "lastName" : "Brown" }, "employeeId" : "2", "age" : 25 }
```

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

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

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

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

async function filterByJsonSchema() {
  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('employees');

  const result = await collection.aggregate([
    {
      $match: {
        $jsonSchema: {
          required: ['name', 'employeeId', 'age'],
          properties: { 'employeeId': { 'bsonType': 'string' } }
        }
      }
    }
  ]).toArray();

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

filterByJsonSchema();
```

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

```
from pymongo import MongoClient

def filter_by_json_schema():
  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['employees']

  result = list(collection.aggregate([
    {
      '$match': {
        '$jsonSchema': {
          'required': ['name', 'employeeId', 'age'],
          'properties': {'employeeId': {'bsonType': 'string'}}
        }
      }
    }
  ]))

  print(result)
  client.close()

filter_by_json_schema()
```

------