Comment fonctionne l'opérateur Setoninsert à MongoDB
L'opérateur $ setoninsert de MongoDB effectue les opérations de mise à jour () qui ont l'indicateur upsert qui implique que cette opération n'inserte que des données. Pour commencer le fonctionnement de l'opérateur $ Setoninsert, nous devons créer la collection MongoDB. Ici, nous avons droit à la collection comme «Workerscollection» et avons inséré quelques documents dans cette collection. Pour insérer les documents dans les «WorkerCollections», la requête d'insertion du MongoDB est déployée qui insère la majeure partie du document en même temps. La requête de plusieurs insertions de documents dans «WorkersCollection» est représentée dans ce qui suit:
db.Collecte de travailleurs.insertone (
"id": 1,
"Nom": "Bella",
"Age": 31,
"Salaire": 50000,
"Hauteur": 6.5,
"Heures d'ouverture" :
"Jour": "8 heures",
"Nuit": "5h"
,
"Détails" :
"City": "Newyork",
"Téléphone": "0842888123"
,
"id": 2,
"Nom": "Kevin",
"Age": 29,
"Salaire": 45000,
"Hauteur": 5.9,
"Heures d'ouverture" :
"Jour": "6 heures",
"Nuit": "3 heures"
,
"Détails" :
"City": "Houston",
"Téléphone": "8329423099"
,
"id": 3,
"Nom": "Steven",
"Age": 34,
"Salaire": 39000,
"Hauteur": 6.4,
"Heures d'ouverture" :
"Jour": "9h",
"Nuit": "2 heures"
,
"Détails" :
"City": "Californie",
"Téléphone": "812373002"
)
Lorsque les documents de la collection fournis sont insérés avec succès, la sortie suivante est obtenue sur la coque MongoDB:
Reconnu: vrai,
insertEDID: ObjectId ("63B56A6707E9102DCADCF96A")
Exemple 1: Utilisation de l'opérateur $ setoninsert pour insérer le nouveau document
Nous avons déjà inséré trois documents dans la collection MongoDB, «Workerscollection». Maintenant, nous pouvons ajouter un nouveau document dans la même collection avec l'opérateur $ Setoninsert. Nous avons la requête suivante où nous utilisons la méthode Update () pour spécifier l'expression «ID»: 4 ». Ensuite, nous utilisons l'opérateur «$ setoninsert» pour définir les champs «âge» et «salaire» avec les nouvelles valeurs qui n'existent pas dans le document. Après cela, nous appliquons le drapeau Upsert avec la «vraie» valeur. Tout d'abord, le nouveau document est créé avec le «ID»: 4. Ensuite, l'opérateur $ setoninsert attribue les valeurs au champ correspondant du nouveau document.
db.Collecte de travailleurs.Update ("id": 4, $ Setoninsert: "Age": 35, "Salaire": 40000, upsert: true);
L'exécution de la requête Upsert précédente renvoie la sortie qui est indiquée dans la démonstration suivante. Les écrivains ont l'option UpsertedCount qui a la valeur de «1», indiquant que le document est renversé dans la collection.
Reconnu: vrai,
INSERTEDID: ObjectId ("63B56CCA378B59E68E0C4608"),
MatchCount: 0,
ModifiedCount: 0,
UpsertedCount: 1
Exemple 2: Utilisation de l'opérateur $ setoninsert pour insérer les nouveaux champs intégrés dans un nouveau document
L'opérateur $ setoninsert est également utilisé pour le document intégré. Nous pouvons utiliser l'opérateur $ setoninsert avec la fonction Update () et l'option Upsert qui est affectée à True. Voici une représentation de la requête pour insérer le nouveau document intégré dans notre «Workerscollection». Nous utilisons la méthode Update () où nous définissons les "Détails.Ville ":" Chicago " Expression d'abord. Ensuite, nous appliquons l'opérateur $ Setoninsert où les champs intégrés, «Workinghours.Jour »et« travail travailliste.Nuit », sont définis avec de nouvelles valeurs. L'option Upsert est également définie avec la valeur réelle pour mettre à jour le document intégré.
db.Collecte de travailleurs.Mise à jour ("Détails.Ville ":" Chicago ",
$ setoninsert: "WorkingHours.Jour ":" 5hrs "," Workinghours.Nuit ":" 5hrs ", upsert: true)
L'écrivain dans la sortie suivante indique que le nombre de versées est 1, ce qui signifie que l'opération précédente est réussie.
Reconnu: vrai,
INSERTEDID: ObjectId ("63B584D4378B59E68E0C4B36"),
MatchCount: 0,
ModifiedCount: 0,
UpsertedCount: 1
Exemple 3: Utilisation de l'opérateur $ setoninsert pour mettre à jour le document
Il y a un autre cas de l'opérateur $ Setoninsert de MongoDB. Les exemples précédents ont utilisé l'opérateur $ setoninsert pour insérer le nouveau document. Maintenant, dans ce cas de MongoDB, nous utilisons l'opérateur $ Setoninsert pour mettre à jour le document déjà présent dans la collection «Workerscollection». Ici, nous avons une requête de mise à jour () qui définit la condition qui met à jour le document dont la valeur du champ «ID» est «2». Lorsque le document est apparié, la prochaine opération est accomplie où nous utilisons les opérateurs $ Set et $ Setoninsert. L'opérateur $ Set est spécifié avec la valeur par rapport aux champs «âge» et «hauteur». Ensuite, l'opérateur $ Setoninsert est déployé pour insérer le champ de nom avec la valeur «Carle» dans le document existant. En fin de compte, nous attribuons la valeur réelle à l'option Upsert pour fonctionner.
db.Collecte de travailleurs.mise à jour(
"id": 2,
$ set: Âge: 40, hauteur: 5.7 ,
$ setoninsert: nom: "Carle"
,
upsert: true
)
Le document est mis à jour avec succès et la sortie suivante est affichée avec la valeur d'option UpsertCount qui est définie sur true:
Reconnu: vrai,
INSERTEDID: 2,
MatchCount: 0,
ModifiedCount: 0,
UpsertedCount: 1
Exemple 4: Utilisation de l'opérateur $ setoninsert pour mettre à jour le document sans opération upsert
Ensuite, nous avons un cas de l'opérateur $ Setoninsert où le document est apparié et modifié, mais il n'y a pas de résultats upsert. Nous fournissons la requête où nous mettons à jour le document à l'aide de la méthode Update (). La méthode Update () est en outre implémentée avec l'opération où l'expression est d'abord attribuée et le champ «ID» a la valeur de «1». Après cela, nous invoquons l'opérateur $ Set pour modifier les champs spécifiés et l'opérateur $ setoninsert pour définir le champ «Nom» avec la nouvelle valeur qui est «Alex». La valeur réelle upsert est attribuée après l'opérateur $ setoninsert.
db.Collecte de travailleurs.mise à jour(
id: 1,
$ set: Salaire: 60000, hauteur: 4.98,
$ setoninsert: nom: "Alex"
,
upsert: true
)
Nous pouvons voir que le nombre de correspondance et ModifiedCount sont définis avec la valeur de «1». Le UpsertCount a une valeur «zéro» qui indique que l'opération Upsert n'est pas effectuée et que le nom «champ» n'est pas mis à jour.
Reconnu: vrai,
InsertEDID: NULL,
MatchCount: 1,
ModifiedCount: 1,
UpsertedCount: 0
Exemple 5: Utilisation de l'opérateur $ setoninsert pour le document correspondant
Ensuite, le fonctionnement de l'opérateur $ setoninsert pour vérifier si cet opérateur fonctionne correctement avec le document de correspondance. L'opérateur $ Setoninsert est inefficace avec les documents déjà existants. Ayons la requête suivante où nous avons l'opérateur $ Setoninsert dans la méthode Update (). L'opérateur $ Setoninsert définit les champs intégrés, «ville» et «téléphone», avec la valeur qui est déjà présente dans le document. Ici, l'opération Upsert ignore simplement l'opérateur $ setoninsert car les valeurs spécifiées sont déjà situées dans le document.
db.Collecte de travailleurs.Mise à jour ("Name": "Kevin",
$ setoninsert: "Détails.Ville ":" Houston ",
"Détails.Téléphone ":" 8329423099 ",
upsert: true)
Les résultats viennent de reconnaître le document correspondant. L'opération USSERT a échoué dans ce cas, comme on le voit dans ce qui suit:
Reconnu: vrai,
InsertEDID: NULL,
MatchCount: 1,
ModifiedCount: 0,
UpsertedCount: 0
Conclusion
Nous avons démontré à propos de l'opérateur MongoDB $ Setoninsert. Nous avons appris à utiliser cet opérateur avec des requêtes MongoDB. L'opérateur $ setoninsert est appliqué dans la méthode Update () pour user le nouveau document spécifié ou spécifié. L'illustration de cas possible est fournie dans cet article dans lequel nous avons inséré le nouveau document et le nouveau document intégré à l'aide de l'opérateur $ Setoninsert. Après cela, nous avons appelé l'opérateur $ Setoninsert pour mettre à jour le document déjà présent et le document correspondant.