Concevoir un schéma d'ordre MongoDB

MongoDBMongoDBBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons concevoir un schéma d'ordre MongoDB pour une application de commerce électronique. Nous commencerons par créer un document structuré pour stocker les informations essentielles de la commande, y compris l'ID de commande, les détails du client, la date de commande et l'état. Ensuite, nous allons développer les détails du client en ajoutant une structure de document imbriquée pour capturer des informations riches sur le client telles que les informations personnelles et l'adresse. Enfin, nous inclurons les articles de commande, les informations de paiement et gérer les mises à jour de l'état de la commande pour créer un schéma d'ordre complet.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mongodb(("MongoDB")) -.-> mongodb/BasicOperationsGroup(["Basic Operations"]) mongodb(("MongoDB")) -.-> mongodb/DataTypesGroup(["Data Types"]) mongodb(("MongoDB")) -.-> mongodb/SchemaDesignGroup(["Schema Design"]) mongodb(("MongoDB")) -.-> mongodb/ArrayandEmbeddedDocumentsGroup(["Array and Embedded Documents"]) mongodb/BasicOperationsGroup -.-> mongodb/insert_document("Insert Document") mongodb/BasicOperationsGroup -.-> mongodb/update_document("Update Document") mongodb/DataTypesGroup -.-> mongodb/work_with_array_data_types("Work with Array Data Types") mongodb/SchemaDesignGroup -.-> mongodb/design_order_schema("Design Order Schema") mongodb/ArrayandEmbeddedDocumentsGroup -.-> mongodb/create_embedded_documents("Create Embedded Documents") mongodb/ArrayandEmbeddedDocumentsGroup -.-> mongodb/query_embedded_documents("Query Embedded Documents") subgraph Lab Skills mongodb/insert_document -.-> lab-422080{{"Concevoir un schéma d'ordre MongoDB"}} mongodb/update_document -.-> lab-422080{{"Concevoir un schéma d'ordre MongoDB"}} mongodb/work_with_array_data_types -.-> lab-422080{{"Concevoir un schéma d'ordre MongoDB"}} mongodb/design_order_schema -.-> lab-422080{{"Concevoir un schéma d'ordre MongoDB"}} mongodb/create_embedded_documents -.-> lab-422080{{"Concevoir un schéma d'ordre MongoDB"}} mongodb/query_embedded_documents -.-> lab-422080{{"Concevoir un schéma d'ordre MongoDB"}} end

Créer la structure de commande

Dans cette étape, nous allons concevoir un schéma d'ordre MongoDB pour une application de commerce électronique. Nous commencerons par comprendre comment créer un document structuré pour stocker les informations de commande.

Tout d'abord, ouvrez le shell MongoDB en lançant le terminal et en tapant :

mongosh

Maintenant, créons une base de données pour nos commandes de commerce électronique :

use ecommerce_orders

Nous allons concevoir une structure d'ordre avec des champs clés qui capturent les informations essentielles de la commande :

db.orders.insertOne({
  order_id: "ORD-2024-001",
  customer: {
    customer_id: "CUST-123",
    name: "John Doe",
    email: "[email protected]"
  },
  order_date: new Date(),
  status: "pending"
});

Analysons la structure de la commande :

  • order_id : Un identifiant unique pour la commande
  • customer : Un document imbriqué avec les détails du client
  • order_date : Horodatage de la création de la commande
  • status : Statut actuel de la commande

Ajouter des détails du client

Dans cette étape, nous allons étendre notre schéma d'ordre en ajoutant des détails du client plus complets à notre document MongoDB. Nous allons démontrer comment créer une structure de document imbriquée qui capture des informations riches sur le client.

Tout d'abord, assurez-vous d'être toujours dans le shell MongoDB de l'étape précédente. Sinon, relancez-le :

mongosh ecommerce_orders

Mettons à jour notre document de commande existant avec des informations plus détaillées sur le client :

db.orders.updateOne(
  { order_id: "ORD-2024-001" },
  {
    $set: {
      customer: {
        customer_id: "CUST-123",
        personal_info: {
          first_name: "John",
          last_name: "Doe",
          email: "[email protected]",
          phone: "+1-555-123-4567"
        },
        address: {
          street: "123 Tech Lane",
          city: "San Francisco",
          state: "CA",
          postal_code: "94105",
          country: "USA"
        },
        contact_preferences: {
          email_notifications: true,
          sms_notifications: false
        }
      }
    }
  }
);

Vérifions le document mis à jour :

db.orders.findOne({ order_id: "ORD-2024-001" });

Ce schéma de client étendu fournit :

  • Des informations personnelles détaillées
  • Des détails d'adresse complets
  • Des préférences de contact
  • Une structure de document imbriquée pour une meilleure organisation

La structure imbriquée permet un stockage de données plus flexible et complet par rapport aux schémas plats.

Inclure les articles de commande

Dans cette étape, nous allons améliorer notre schéma d'ordre en ajoutant une liste complète d'articles de commande. Nous allons démontrer comment créer un tableau d'articles dans notre document d'ordre, en capturant des informations détaillées sur les produits.

Assurez-vous d'être toujours dans le shell MongoDB :

mongosh ecommerce_orders

Maintenant, mettons à jour notre document d'ordre pour inclure un tableau d'articles détaillé :

db.orders.updateOne(
  { order_id: "ORD-2024-001" },
  {
    $set: {
      items: [
        {
          product_id: "PROD-001",
          name: "Wireless Headphones",
          category: "Electronics",
          price: 129.99,
          quantity: 1,
          subtotal: 129.99
        },
        {
          product_id: "PROD-002",
          name: "Laptop Sleeve",
          category: "Accessories",
          price: 24.5,
          quantity: 2,
          subtotal: 49.0
        }
      ],
      total_items: 2,
      subtotal: 178.99,
      tax: 14.32,
      total: 193.31
    }
  }
);

Vérifions le document mis à jour :

db.orders.findOne({ order_id: "ORD-2024-001" });

Caractéristiques clés de ce schéma d'articles :

  • Tableau d'articles avec des informations détaillées sur les produits
  • Chaque article inclut l'ID du produit, le nom, la catégorie, le prix et la quantité
  • Sous-totaux calculés pour chaque article individuel
  • Totaux généraux de la commande (nombre d'articles, sous-total, taxe, total)

La structure de tableau permet plusieurs articles dans une seule commande et offre une flexibilité pour différents types de produits.

Définir les informations de paiement

Dans cette étape, nous allons ajouter des informations de paiement détaillées à notre schéma d'ordre. Nous allons démontrer comment créer une structure de paiement complète qui capture diverses informations liées au paiement.

Assurez-vous d'être toujours dans le shell MongoDB :

mongosh ecommerce_orders

Mettons à jour notre document d'ordre avec les informations de paiement :

db.orders.updateOne(
  { order_id: "ORD-2024-001" },
  {
    $set: {
      payment: {
        method: "credit_card",
        card_info: {
          last_four: "4567",
          card_type: "Visa",
          payment_network: "Visa"
        },
        transaction: {
          transaction_id: "TXN-2024-001",
          amount: 193.31,
          currency: "USD",
          timestamp: new Date(),
          status: "completed"
        },
        billing_address: {
          street: "123 Tech Lane",
          city: "San Francisco",
          state: "CA",
          postal_code: "94105",
          country: "USA"
        }
      }
    }
  }
);

Vérifions le document mis à jour :

db.orders.findOne({ order_id: "ORD-2024-001" });

Caractéristiques clés de ce schéma de paiement :

  • Détails de la méthode de paiement
  • Informations de carte masquées
  • Spécificités de la transaction
  • Adresse de facturation
  • Gestion sécurisée des données de paiement sensibles

La structure imbriquée fournit une vue complète du paiement tout en maintenant la sécurité des informations sensibles.

Gérer l'état de la commande

Dans cette étape, nous allons améliorer notre schéma d'ordre en mettant en œuvre un mécanisme de suivi complet de l'état de la commande. Nous allons démontrer comment créer un système de suivi d'état détaillé qui capture le cycle de vie de la commande.

Assurez-vous d'être toujours dans le shell MongoDB :

mongosh ecommerce_orders

Mettons à jour notre document d'ordre avec une structure de suivi d'état avancée :

db.orders.updateOne(
  { order_id: "ORD-2024-001" },
  {
    $set: {
      status_tracking: {
        current_status: "processing",
        status_history: [
          {
            status: "created",
            timestamp: new Date(Date.now() - 86400000), // Il y a 24 heures
            notes: "Commande initialement passée"
          },
          {
            status: "processing",
            timestamp: new Date(),
            notes: "Commande en cours de préparation pour l'expédition"
          }
        ],
        fulfillment: {
          warehouse: "SF-01",
          estimated_shipping_date: new Date(Date.now() + 172800000), // Dans 2 jours
          shipping_method: "standard"
        },
        tracking_number: null,
        expected_delivery: new Date(Date.now() + 432000000) // Dans 5 jours
      }
    }
  }
);

Vérifions le document mis à jour :

db.orders.findOne({ order_id: "ORD-2024-001" });

Caractéristiques clés de ce schéma de suivi d'état :

  • État actuel de la commande
  • Historique d'état complet
  • Détails de l'exécution de la commande
  • Dates d'expédition et de livraison estimées
  • Méccanisme de suivi flexible

La structure imbriquée permet un suivi détaillé et des mises à jour d'état faciles.

Sommaire

Dans ce laboratoire, nous avons appris à concevoir un schéma d'ordre MongoDB pour une application de commerce électronique. Tout d'abord, nous avons créé un document structuré pour stocker les informations essentielles de la commande, y compris un ID de commande unique, les détails du client, la date de commande et l'état de la commande. Ensuite, nous avons étendu les détails du client en ajoutant une structure de document imbriquée pour capturer des informations riches sur le client, telles que les informations personnelles et l'adresse. De plus, nous avons inclus les articles de commande, les informations de paiement et géré les mises à jour de l'état de la commande. À la fin de ce laboratoire, nous avions un schéma d'ordre MongoDB complet qui peut gérer efficacement les commandes de commerce électronique.