MongoDB no operador

MongoDB no operador
Nesta postagem, discutiremos como usar o $ no operador em bancos de dados MongoDBB. O $ em operador nos permite selecionar documentos em que o valor de um determinado campo é igual a qualquer valor em uma matriz fornecida.

Sintaxe do operador

A expressão a seguir define a sintaxe usada para o $ no operador:

Field: $ in: [,,…]

O operador compara cada parâmetro com todos os documentos da coleção especificada. É importante estar atento à forma como esse operador é aplicado porque pode levar a hits de desempenho.

MongoDB recomenda limitar o número de parâmetros a serem digitalizados para evitar problemas significativos de desempenho.

Você também pode usar outros recursos, como índices para ajudar o MongoDB ao aplicar o $ no operador em uma grande coleção.

Exemplo prático

Vamos fazer uma coleção com valores do mundo real para ilustrar como usar este operador. Considere a coleção de amostras mostrada abaixo:

dB.CreateCollection ("Shop")
dB.comprar.InsertMany ([
_id: 0, "Product_name": "Apple MacBook Air", "Quantity": 100, "Price": 1199, "Categoria": ["Tech", "Apple"],
_id: 1, "Product_name": "Google Pixel 6A", "Quantity": 1000, "Price": 449, "Categoria": ["Tech", "Google"],
_id: 2, "Product_name": "Apple iPad Air", "Quantity": 550, "Price": 599, "Categoria": ["Tech", "Apple"],
_id: 3, "Product_name": "Samsung Z Fold 4", "Quantity": 400, "Price": 1799, "Categoria": ["Tech", "Samsung"],
_id: 4, "Product_name": "Sony WH-100XM5", "Quantity": 800, "Price": 400, "Categoria": ["Tech", "Sony"],
]))

A consulta acima cria uma coleção "Shop" e adicione dados de amostra a ela. Vamos agora explorar como podemos usar o $ no operador em tal documento.

Usando o $ no operador para localizar documentos correspondentes

O exemplo abaixo usa o $ no operador para encontrar todos os documentos em que a categoria é "Apple" ou "Samsung".

dB.comprar.encontre (categoria: $ in: ["Apple", "Samsung"])

Nesse caso, a consulta deve retornar apenas os documentos com os valores "Apple" ou "Samsung" na matriz de categoria.

Um exemplo de saída é como mostrado:


"_id": 0.0,
"Product_name": "Apple MacBook Air",
"Quantidade": 100.0,
"Preço": 1199.0,
"categoria" : [
"Tecnologia",
"maçã"
]


"_id": 2.0,
"Product_name": "Apple iPad Air",
"Quantidade": 550.0,
"Preço": 599.0,
"categoria" : [
"Tecnologia",
"maçã"
]


"_id": 3.0,
"Product_name": "Samsung Z Fold 4",
"Quantidade": 400.0,
"Preço": 1799.0,
"categoria" : [
"Tecnologia",
"Samsung"
]

Usando o $ no operador para atualizar documentos que correspondem a uma condição específica

Também podemos usar o $ no operador para executar uma atualização de coleção usando os métodos UpdateOne () ou Updatemany ().

Suponha que a loja tenha ficado sem dispositivos da Apple e desejamos atualizar os documentos em uma única consulta, podemos executar uma solicitação como mostrado:

dB.comprar.updatemany (categoria: $ in: ["Apple"],
$ set: disponível: false
)

A consulta acima atualiza os documentos em que a categoria é igual a "Apple" e o status disponível para false.

O documento resultante deve parecer como mostrado:


"_id": 0.0,
"Product_name": "Apple MacBook Air",
"Quantidade": 100.0,
"Preço": 1199.0,
"categoria" : [
"Tecnologia",
"maçã"
],
"Disponível": falso


"_id": 1.0,
"Product_name": "Google Pixel 6A",
"Quantidade": 1000.0,
"Preço": 449.0,
"categoria" : [
"Tecnologia",
"Google"
]


"_id": 2.0,
"Product_name": "Apple iPad Air",
"Quantidade": 550.0,
"Preço": 599.0,
"categoria" : [
"Tecnologia",
"maçã"
],
"Disponível": falso


"_id": 3.0,
"Product_name": "Samsung Z Fold 4",
"Quantidade": 400.0,
"Preço": 1799.0,
"categoria" : [
"Tecnologia",
"Samsung"
]


"_id": 4.0,
"Product_name": "Sony WH-100XM5",
"Quantidade": 800.0,
"Preço": 400.0,
"categoria" : [
"Tecnologia",
"Sony"
]

Podemos ver qualquer entrada da Apple inclui um campo disponível com o valor definido como false.

Conclusão

Nesta postagem, exploramos o $ no operador em bancos de dados MongoDB. Este operador nos permite selecionar documentos cujo valor de campo corresponda a um determinado conjunto de valores em uma matriz.

Obrigado pela leitura!!