$elemMatch - Amazon DocumentDB

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

$elemMatch

O $elemMatch operador no Amazon DocumentDB é usado para consultar um campo de matriz e retornar documentos em que pelo menos um elemento na matriz corresponda aos critérios especificados. Esse operador é particularmente útil quando você tem estruturas de dados complexas com matrizes aninhadas ou documentos incorporados.

A versão 2.0 do Planner adicionou suporte de índice para$elemMatch.

Parâmetros

  • field: o campo de matriz a ser consultado.

  • query: os critérios para comparar com os elementos da matriz.

 

Usando $elemMatch dentro de uma $all expressão

Consulte Usar $elemMatch dentro de uma expressão $all as limitações relacionadas ao uso do $elemMatch operador em uma $all expressão.

Exemplo (MongoDB Shell)

O exemplo a seguir demonstra como usar o $elemMatch operador para encontrar documentos em que a parts matriz tenha pelo menos um elemento que corresponda aos critérios especificados.

Crie documentos de amostra

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

Exemplo de consulta

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

Saída

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

Exemplos de código

Para ver um exemplo de código para usar o $elemMatch comando, escolha a guia do idioma que você deseja 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 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()