Maison >base de données >MongoDB >Comment ajouter, supprimer, modifier et rechercher des instructions dans MongoDB

Comment ajouter, supprimer, modifier et rechercher des instructions dans MongoDB

百草
百草original
2025-03-04 18:16:201000parcourir

MongoDB CRUD Operations: A Comprehensive Guide

This article answers your questions about performing CRUD (Create, Read, Update, Delete) operations in MongoDB, focusing on best practices, handling large datasets, and avoiding common pitfalls.

Performing CRUD Operations in MongoDB

MongoDB uses a document-oriented model, meaning data est stocké dans des documents flexibles de type JSON. Les opérations CRUD sont effectuées à l'aide du pilote MongoDB de votre choix (par exemple, Node.js Driver, Pymongo de Python, pilote Java). Examinons chaque opération:

  • Créer (insérer): La méthode insertOne() insère un seul document dans une collection. insertMany() insère plusieurs documents. Par exemple, à l'aide du pilote Python:
<code class="python">import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]

mydict = { "name": "John", "address": "Highway 37" }
x = mycol.insert_one(mydict)
print(x.inserted_id) #Prints the inserted document's ID

mydocs = [
  { "name": "Amy", "address": "Apple st 652"},
  { "name": "Hannah", "address": "Mountain 21"},
  { "name": "Michael", "address": "Valley 345"}
]
x = mycol.insert_many(mydocs)
print(x.inserted_ids) #Prints a list of inserted document IDs</code>
  • lire (trouver): La méthode find() récupère les documents. Vous pouvez utiliser les opérateurs de requête pour filtrer les résultats. findOne() récupère un seul document.
<code class="python">myquery = { "address": "Mountain 21" }
mydoc = mycol.find(myquery)
for x in mydoc:
  print(x)

mydoc = mycol.find_one(myquery)
print(mydoc)</code>
  • Mise à jour: La méthode updateOne() met à jour un seul document. updateMany() met à jour plusieurs documents. Vous utilisez l'opérateur $set pour modifier les champs.
<code class="python">myquery = { "address": "Valley 345" }
newvalues = { "$set": { "address": "Canyon 123" } }
mycol.update_one(myquery, newvalues)

myquery = { "address": { "$regex": "^V" } }
newvalues = { "$set": { "address": "updated address" } }
mycol.update_many(myquery, newvalues)</code>
  • supprimer: La méthode deleteOne() supprime un seul document. deleteMany() supprime plusieurs documents.
<code class="python">myquery = { "address": "Canyon 123" }
mycol.delete_one(myquery)

myquery = { "address": { "$regex": "^M" } }
x = mycol.delete_many(myquery)
print(x.deleted_count)</code>

N'oubliez pas de remplacer "mongodb://localhost:27017/" par votre chaîne de connexion MongoDB.

meilleures pratiques pour les performances optimales

  • Index d'utilisation: Les index accélèrent considérablement les requêtes. Créez des index sur les champs fréquemment interrogés. Considérez les index composés pour les requêtes impliquant plusieurs champs.
  • Opérations de lots: pour insérer ou mettre à jour de nombreux documents, utilisez insertMany() et updateMany() pour réduire le nombre de frémités à la base de données.
  • Quéries efficaces: Écriture et quai ciblement. Évitez d'utiliser des clauses $where car elles peuvent être lentes. Utilisez les opérateurs de requête appropriés.
  • Modélisation des données: Concevez soigneusement votre modèle de données. Envisagez la dénormaisation pour réduire les jointures et améliorer les performances de la requête si vous appropriez pour votre cas d'utilisation.
  • Poolage de connexion: Réutiliser les connexions de la base de données au lieu de créer une nouvelle connexion pour chaque opération. Cela réduit les frais généraux.
  • Types de données appropriés: Choisissez le type de données le plus efficace pour chaque champ (par exemple, utilisez des entiers au lieu des chaînes le cas échéant).

Gérer efficacement les grands ensembles de données

  • sharding: pour les grands datas, shard votre mongode:
  • pour les grands datas, vous faites un mongode: vous répliquez des datas, vous avez des mongons de mongodes: Données sur plusieurs serveurs.
  • Framework d'agrégation:
  • Utilisez le cadre d'agrégation pour les tâches complexes de traitement et d'analyse des données sur de grands ensembles de données. Il propose des opérations optimisées pour le filtrage, le tri et le regroupement.
  • Changement de changes:
  • Surveiller les modifications de vos données en temps réel à l'aide de flux de changement. Ceci est utile pour créer des applications réactives qui répondent aux mises à jour des données.
  • Validation des données:
  • Implémentez une validation robuste des données pour assurer l'intégrité des données et empêcher l'insertion de données courantes ou malformées. Peut être considérablement plus lent que les autres opérateurs de requête. Évitez-les chaque fois que possible.

Les index d'ignorance:
    Ne pas créer d'index appropriés peut entraîner des performances de requête extrêmement lentes.
  • $where Modélisation de données incorrectes: Un modèle de données mal conçu peut rendre les requêtes inefficaces et complexe. projection ($where {field1: 1, field2: 1}) pour réduire le trafic réseau et améliorer les performances.
  • Manque de gestion des erreurs: Implémentez la gestion des erreurs appropriée pour gérer gracieusement les problèmes potentiels pendant les opérations CRUD.
  • Ignorer la validation des données: Échec pour valider les données avant l'insertion peut entraîner des inconsciences et des erreurs dans votre utilité. Et en évitant les pièges courants, vous pouvez assurer des opérations de crud efficaces et fiables dans vos applications MongoDB, même lorsque vous traitez avec de grands ensembles de données.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn