Neste, vamos aprender a verificar se um documento em uma determinada coleção contém um determinado campo pelo uso do operador $ existe. Se isso parece interessante, vamos entrar.
Sintaxe do operador
Vamos começar com o básico e discutir a sintaxe do operador $ existe. O operador assume uma sintaxe relativamente simples, conforme mostrado no seguinte snippet de código:
Field: $ existe:
O operador corresponde então aos documentos que contêm o campo especificado, incluindo onde o valor do referido campo é nulo. No entanto, se o valor booleano for falso, o operador retornará todos os documentos que não contêm o campo referido.
Se você vier dos bancos de dados SQL, esse operador não é semelhante ao Exist Wered in the SQL Language.
Exemplo prático
Chega com a teoria. Vejamos uma coleção prática e aprendemos a usar esse operador para buscar os documentos que contêm ou não contêm um determinado campo.
Suponha que tenhamos uma coleção com os seguintes documentos:
dB.CreateCollection ("funcionários")
Podemos então adicionar um exemplo de dados da seguinte forma:
dB.funcionários.InsertMany ([
"_id": 1,
"First_name": "Raymond",
"Last_name": "Zanib",
"Status": "ativo",
"Salário": 100000
,
"_id": 2,
"Full_name": "Alexandros Flower",
"Salário": 110000,
"Status": "ativo"
,
"_id": 3,
"Full_name": "Umer McCulloch",
"Salário": 109000,
"Idiomas": "en"
]))
No exemplo dado, temos três documentos com campos e valores variados. Vamos descobrir como eles podem nos ajudar a entender o operador $ existe.
Busque os documentos com um determinado campo
Podemos usar o operador $ existe para buscar todos os documentos que contêm o campo, "Full_Name". Uma solicitação de exemplo é como mostrado no seguinte:
dB.funcionários.encontre ("full_name": $ existe: true)
Como definimos o $ existe como true, a consulta deve retornar apenas os documentos que contêm o campo definido.
Um exemplo de saída é como mostrado:
[[
_id: 2,
Full_name: 'Alexandros Flower',
Salário: 110000,
Status: 'ativo'
,
_id: 3,
Full_name: 'Umer McCulloch',
Salário: 109000,
Idiomas: 'en'
]
Como podemos ver, os dois documentos retornados contêm o campo "Full_name".
Busque os documentos que não incluem um campo específico
Também podemos fazer o contrário. Na consulta a seguir, usamos o operador $ existe, mas definimos o valor como false, permitindo que o documento retorne os documentos que não incluem o campo definido.
dB.funcionários.encontre ("full_name": $ existe: false)
Nesse caso, existe apenas um documento que corresponde à condição definida.
[[
_id: 1,
First_name: 'Raymond',
Último nome: 'zanib',
Status: 'ativo',
Salário: 100000
]
Conclusão
Aí está. A funcionalidade do operador $ é quebrada para o seu entendimento. Fique ligado para mais tutoriais.