Dans celui-ci, nous apprendrons à vérifier si un document dans une collection donnée contient un certain champ par l'utilisation de l'opérateur $. Si cela semble intéressant, sautons.
Syntaxe de l'opérateur
Commençons par les bases et discutons de la syntaxe de l'opérateur de $. L'opérateur prend une syntaxe relativement simple comme illustré dans l'extrait de code suivant:
champ: $ existe:
L'opérateur correspond ensuite aux documents qui contiennent le champ spécifié, y compris où la valeur dudit champ est nul. Cependant, si la valeur booléenne est fausse, l'opérateur renvoie tous les documents qui ne contiennent pas ledit champ.
Si vous venez des bases de données SQL, cet opérateur n'est pas similaire à la requête existant dans la langue SQL.
Exemple pratique
Assez avec la théorie. Examinons une collection pratique et apprenons à utiliser cet opérateur pour récupérer les documents qui contiennent ou ne contiennent pas un champ donné.
Supposons que nous ayons une collection avec les documents suivants:
db.CreateCollection («employés»)
Nous pouvons ensuite ajouter un exemple de données comme suit:
db.employés.insertmany ([
"_id": 1,
"First_name": "Raymond",
"Last_name": "Zanib",
"statut": "actif",
"Salaire": 100000
,
"_id": 2,
"full_name": "fleur d'Alexandros",
"Salaire": 110000,
"statut": "actif"
,
"_id": 3,
"Full_name": "Umer McCulloch",
"Salaire": 109000,
"langues": "en"
])
Dans l'exemple donné, nous avons trois documents avec différents champs et valeurs. Découvrons comment ils peuvent nous aider à comprendre l'opérateur $ existant.
Retrouvez les documents avec un champ donné
Nous pouvons utiliser l'opérateur $ existant pour récupérer tous les documents qui contiennent le champ, "full_name". Un exemple de demande est comme indiqué dans ce qui suit:
db.employés.find ("full_name": $ exists: true)
Puisque nous définissons le $ existant sur True, la requête ne doit retourner que les documents qui contiennent le champ défini.
Un exemple de sortie est comme indiqué:
[
_id: 2,
full_name: 'fleur d'Alexandros',
Salaire: 110000,
Statut: «actif»
,
_id: 3,
full_name: 'Umer McCulloch',
Salaire: 109000,
Langues: «en»
]]
Comme nous pouvons le voir, les deux documents renvoyés contiennent le champ «Full_name».
Reprendre les documents qui n'incluent pas de champ spécifique
Nous pouvons également faire l'inverse. Dans la requête suivante, nous utilisons l'opérateur $ existant mais à la place, nous définissons la valeur sur False, permettant au document de renvoyer les documents qui n'incluons pas le champ Set.
db.employés.find ("full_name": $ exists: false)
Dans ce cas, il n'y a qu'un seul document qui correspond à la condition définie.
[
_id: 1,
First_name: 'Raymond',
Last_name: «Zanib»,
Statut: «actif»,
Salaire: 100000
]]
Conclusion
Voilà. La fonctionnalité de l'opérateur $ est décomposée pour votre compréhension. Restez à l'écoute pour plus de tutoriels.