

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.

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

Nouveau depuis la version 4.0.

L'`$setDifference`opérateur dans Amazon DocumentDB est utilisé pour comparer deux ensembles et renvoyer les éléments qui se trouvent dans le premier ensemble mais pas dans le second ensemble. Cet opérateur est utile pour trouver les éléments uniques entre deux ensembles.

**Paramètres**
+ `firstSet`: premier ensemble à comparer.
+ `secondSet`: Le deuxième ensemble à comparer.

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

L'exemple suivant montre comment utiliser l'`$setDifference`opérateur pour rechercher les éléments uniques entre deux ensembles.

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

```
db.collection.insertMany([
  { _id: 1, fruits: ["apple", "banana", "cherry", "date"] },
  { _id: 2, fruits: ["banana", "cherry", "date", "elderberry"] }
]);
```

**Exemple de requête**

```
db.collection.aggregate([
  {
    $project: {
      uniqueFruits: { $setDifference: ["$fruits", ["banana", "cherry", "date"]] }
    }
  }
]);
```

**Sortie**

```
[
  { "_id": 1, "uniqueFruits": ["apple"] },
  { "_id": 2, "uniqueFruits": ["elderberry"] }
]
```

La requête exécute les étapes suivantes :

1. Il utilise la `$project` scène pour créer un nouveau champ `uniqueFruits` pour chaque document.

2. L'`$setDifference`opérateur compare le `fruits` tableau avec le tableau `[&quot;banana&quot;, &quot;cherry&quot;, &quot;date&quot;]` et renvoie les éléments uniques du `fruits` tableau.

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

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

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

Voici un exemple d'utilisation de l'`$setDifference`opérateur dans une application Node.js :

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

async function main() {
  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('mycollection');

  // Insert sample documents
  await collection.insertMany([
    { _id: 1, fruits: ["apple", "banana", "cherry", "date"] },
    { _id: 2, fruits: ["banana", "cherry", "date", "elderberry"] }
  ]);

 // Query using $setDifference
  const result = await collection.aggregate([
    {
      $project: {
        uniqueFruits: { $setDifference: ["$fruits", ["banana", "cherry", "date"]] }
      }
    }
  ]).toArray();

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

main();
```

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

Voici un exemple d'utilisation de l'`$setDifference`opérateur dans une application Python :

```
from pymongo import MongoClient

def main():
    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['mycollection']

    # Insert sample documents
    collection.insert_many([
        {'_id': 1, 'fruits': ["apple", "banana", "cherry", "date"]},
        {'_id': 2, 'fruits': ["banana", "cherry", "date", "elderberry"]}
    ])

    # Query using $setDifference
    result = list(collection.aggregate([
        {
            '$project': {
                'uniqueFruits': {'$setDifference': ['$fruits', ["banana", "cherry", "date"]]}
            }
        }
    ]))

    print(result)
    client.close()

if __name__ == '__main__':
    main()
```

------