

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

Nouveau depuis la version 4.0.

Non pris en charge par le cluster Elastic.

L'`$jsonSchema`opérateur dans Amazon DocumentDB est utilisé pour filtrer les documents en fonction d'un schéma JSON spécifié. Cet opérateur vous permet d'interroger des documents qui correspondent à un schéma JSON particulier, en veillant à ce que les documents récupérés respectent les exigences spécifiques en matière de structure et de type de données.

À l'aide de l'opérateur de requête d'`$jsonSchema`évaluation dans le cadre de la création d'une collection, vous pouvez valider le schéma des documents insérés dans la collection. Voir [Utilisation de la validation du schéma JSON](json-schema-validation.md) pour plus d'informations.

**Paramètres**
+ `required`(tableau) : Spécifie les champs obligatoires dans le document.
+ `properties`(objet) : définit le type de données et les autres contraintes pour chaque champ du document.

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

L'exemple suivant illustre l'utilisation de l'`$jsonSchema`opérateur pour filtrer la `employees` collection afin de récupérer uniquement les documents contenant les `name` `age` champs, et et le `employeeId` champ est de type`string`. `employeeId`

**Création d'exemples de documents**

```
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" }
]);
```

**Exemple de requête**

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

**Sortie**

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

## Exemples de code
<a name="jsonSchema-code"></a>

Pour afficher un exemple de code d'utilisation de la `$jsonSchema` commande, choisissez l'onglet correspondant à la langue que vous souhaitez utiliser :

------
#### [ 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()
```

------