$elemMatch - Amazon DocumentDB

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.

$elemMatch

L'$elemMatchopérateur dans Amazon DocumentDB est utilisé pour interroger un champ de tableau et renvoyer des documents dans lesquels au moins un élément du tableau correspond aux critères spécifiés. Cet opérateur est particulièrement utile lorsque vous avez des structures de données complexes avec des tableaux imbriqués ou des documents incorporés.

La version 2.0 du planificateur a ajouté le support des index pour$elemMatch.

Paramètres

  • field: le champ du tableau à interroger.

  • query: les critères à comparer aux éléments du tableau.

 

Utilisation $elemMatch au sein d'une $all expression

Consultez Utilisation $elemMatch au sein d'une $all expression les limites relatives à l'utilisation de l'$elemMatchopérateur dans une $all expression.

Exemple (MongoDB Shell)

L'exemple suivant montre comment utiliser l'$elemMatchopérateur pour rechercher des documents dans lesquels le parts tableau contient au moins un élément répondant aux critères spécifiés.

Création d'exemples de documents

db.col.insertMany([ { _id: 1, parts: [{ part: "xyz", qty: 10 }, { part: "abc", qty: 20 }] }, { _id: 2, parts: [{ part: "xyz", qty: 5 }, { part: "abc", qty: 10 }] }, { _id: 3, parts: [{ part: "xyz", qty: 15 }, { part: "abc", qty: 100 }] }, { _id: 4, parts: [{ part: "abc", qty: 150 }] } ]);

Exemple de requête

db.col.find({ parts: { "$elemMatch": { part: "xyz", qty: { $lt: 11 } } } })

Sortie

{ "_id" : 1, "parts" : [ { "part" : "xyz", "qty" : 10 }, { "part" : "abc", "qty" : 20 } ] } { "_id" : 2, "parts" : [ { "part" : "xyz", "qty" : 5 }, { "part" : "abc", "qty" : 10 } ] }

Exemples de code

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

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 col = db.collection('col'); const result = await col.find({ parts: { "$elemMatch": { part: "xyz", qty: { $lt: 11 } } } }).toArray(); console.log(JSON.stringify(result, null, 2)); await 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'] col = db['col'] result = list(col.find({ 'parts': { '$elemMatch': {'part': 'xyz', 'qty': {'$lt': 11}} } })) print(result) client.close() example()