Cet article détaille les opérations de création, de lecture, de mise à jour et de supprimer (CRUD) dans MongoDB. Il couvre à l'aide de méthodes comme insertone (), find (), updateOne (), DeleteOn () et les meilleures pratiques pour des opérations efficaces, y compris l'indexation, l'opératio par lots
cette section Détails comment effectuer la création, la mise à jour et la mise à jour (CRUD) dans les opérations Mongo. Nous utiliserons l'exemple d'une collection nommée "Products" avec des documents contenant _id
, nom
, prix
, et description
insertmany ()
(pour plusieurs documents). Voici un exemple utilisant le shell MongoDB:
<code class="javascript"> db.products.insertone ({name: & quot; ordinateur portable " }, {nom: & quot; clavier & quot; Le champ <code> _id </code> est généré automatiquement s'il n'est pas fourni. Les implémentations spécifiques au pilote seront similaires, en utilisant les méthodes <code> insertone () </code> ou <code> du pilote respectif () <p> <strong> Documents de lecture: </strong> Les documents de lecture impliquent la question de la collection à l'aide de <code> find () </code>. Vous pouvez spécifier des filtres pour récupérer des documents spécifiques. Par exemple: </p> <pre class="brush:php;toolbar:false"> <code class="javascript"> // trouver tous les produits db.products.find () // trouver des produits avec un prix inférieur à 500 db.products.find ({prix: {$ lt: 500}}}) // trouver un seul produit par id db.products.findone ({_id: ObjectId ("" ... Avec le ObjectId réel </code>
find ()
renvoie un curseur, vous permettant d'itérer les résultats. findone ()
Renvoie un seul document correspondant à la requête. Encore une fois, les implémentations du pilote auront des méthodes équivalentes.
Mise à jour des documents: MongoDB fournit plusieurs façons de mettre à jour les documents. updateOne ()
met à jour un seul document, tandis que updatemany ()
met à jour plusieurs documents. Vous utilisez l'opérateur $ set
pour modifier les champs.
<code class="javascript"> // Mettez à jour le prix d'un produit spécifique db.products.updateOne ({name: & quot; ordinateur portable "}, {$ set: {Price: 1300}}) // augmenter le prix de tous les produits par 10% db.prodUctS. {}, {$ Inc: {Price: {$ Multiply: [0.1, & quot; $ Price & quot;]}}}) </code>
Le premier exemple met à jour le prix d'un ordinateur portable. Le deuxième exemple utilise l'opérateur $ inc
pour augmenter le prix de tous les produits. Des mises à jour plus complexes peuvent être réalisées à l'aide d'autres opérateurs de mise à jour comme $ push
, $ pull
, $ addtoset
, etc.
Suppression des documents: Deleteone ()
supprime un document unique, et DeleMany ()
supprime les multiples multiples, et Delemany () Suppression des multiples multiples, et <code> DeleMany () Suppression des multiples multiples, et <code> DeleMany () Suppression des multiples multiples, et <code> DeleMany () Suppression Multips Multips Documents.
<code class="javascript"> // supprimer un produit spécifique db.products.deleteone ({name: & quot; clavier & quot;}) // supprimer tous les produits avec un prix supérieur à 1000 db.products.deleteMany ({prix: {$ gt: 1000}}) Les critères. <h2> Les meilleures pratiques pour les opérations CRUD efficaces dans MongoDB </h2> <p> Les opérations CRUD efficaces nécessitent une considération attentive de plusieurs facteurs: </p> <ul> <li> <strong> Indexation: </strong> Créer des index sur des champs fréquemment interrogés pour accélérer <code> Find () </code> opération. Les index sont similaires aux indices dans les bases de données relationnelles. Choisissez les types d'index appropriés (par exemple, un seul champ, composé, géospatial) en fonction de vos requêtes. </li> <li> <strong> Opérations de lots: </strong> utiliser <code> insertMany () </code>, <code> updatemany () </code> et <code> délétique Opérations. </code> </li> <li> <strong> Modélisation des données: </strong> Concevez soigneusement votre modèle de données pour minimiser le nombre de requêtes nécessaires aux opérations communes. La conception du schéma approprié peut améliorer considérablement les performances de la requête. </li> <li> <strong> Optimisation des requêtes: </strong> Évitez d'utiliser <code> $ où </code> clauses car elles peuvent être lentes. Au lieu de cela, utilisez des opérateurs comme <code> $ gt </code>, <code> $ lt </code>, <code> $ dans </code>, etc., qui exploite efficacement les index. Utilisez une projection appropriée (<code> {_id: 0, nom: 1, prix: 1} </code>) pour récupérer uniquement les champs nécessaires, réduisant le transfert de données. </li> <li> <strong> Envoi de connexion: </strong> Utiliser la mise en commun des connexions pour réutiliser les connexions de base de données, en réduisant les frais généraux de l'établissement de nouvelles connexions pour chaque opération. La plupart des pilotes offrent des capacités de regroupement de connexion intégrées. </li> </ul> <h2> Les erreurs de traitement pendant les opérations CRUD </h2> <p> La gestion des erreurs est cruciale pour les applications mongoDB robustes. Les conducteurs fournissent des mécanismes pour attraper et gérer les exceptions pendant les opérations CRUD. </p> <ul> <li> <strong> Blocs de capture d'essai: </strong> Enveloppez vos opérations CRUD dans <code> Try-Catch </code> Blocks pour gérer les erreurs potentielles comme les problèmes de réseau, les données invalides, ou les erreurs de base de données. </li> <li> <strong des codes d> Erreur et implémentez la logique appropriée pour le gérer gracieusement. MongoDB fournit une documentation détaillée du code d'erreur. </strong> </li> <li> <strong> Loggation: </strong> erreurs de journal à des fins de débogage et de surveillance. Incluez des informations pertinentes telles que le message d'erreur, la trace de pile et l'opération qui a échoué. </li> <li> <strong> Mécanisme de réessayer: </strong> Implémentez un mécanisme de réessayer pour les erreurs transitoires (par exemple, temps mort du réseau). Reessayez une opération ratée après un court délai pour améliorer la résilience. </li> </ul> <h2> effectuant des opérations CRUD avec différents pilotes </h2> <p> Les méthodes spécifiques pour effectuer des opérations CRUD varient légèrement en fonction du pilote utilisé. Voici un bref aperçu de Node.js et Python: </p> <p> <strong> node.js (en utilisant le pilote <code> mongodb </code>): </strong> </p> <pe> <code class="javascript"> const {mongoClient} = required ('MongoDB'); // ... Code de connexion ... const client = new MongoClient (URI); fonction async run () {try {attend client.connect (); const db = client.db ('mydatabase'); const Collection = db.collection («produits»); // ... opérations crud utilisant collection.insertOne (), collection.find (), etc. ...} enfin {attend client.close (); }} run (). Catch (console.dir); </code> </pe></code>
python (en utilisant le pilote pymongo
):
<code class="python"> Importer Pymongo # ... Connection Code ... Client = Pymongo.mongoclient (uri) db = client ['MyData DB ['Products'] # ... opérations crud utilisant collection.insert_one (), collection.find (), etc. ... client.close () </code>
Les deux exemples démontrent la structure de base. Consultez la documentation de votre conducteur spécifique pour des informations détaillées sur les méthodes et options disponibles. N'oubliez pas de remplacer les espaces réservés comme uri
par votre chaîne de connexion réelle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!