from pymongo import MongoClient
# Connexion
client = MongoClient('mongodb://localhost:27017/')
db = client['blog']
# Insérer un article
article = {
'titre': 'MongoDB avec Python',
'contenu': 'Exemple de contenu...',
'auteur': 'Baptiste',
'tags': ['python', 'mongodb']
}
result = db.articles.insert_one(article)
# Rechercher des articles
articles = db.articles.find({
'tags': 'python',
'auteur': 'Baptiste'
})
# Mise à jour
db.articles.update_one(
{'_id': result.inserted_id},
{'$set': {'vues': 1}}
)
# Agrégation
pipeline = [
{'$match': {'tags': 'python'}},
{'$group': {
'_id': '$auteur',
'total_articles': {'$sum': 1}
}}
]
stats = list(db.articles.aggregate(pipeline))
const { MongoClient } = require('mongodb');
async function main() {
const client = await MongoClient.connect(
'mongodb://localhost:27017'
);
const db = client.db('ecommerce');
// Créer un produit
const produit = {
nom: 'Smartphone',
prix: 499.99,
stock: 100
};
await db.collection('produits')
.insertOne(produit);
// Rechercher des produits
const produits = await db.collection('produits')
.find({ prix: { $lt: 500 } })
.sort({ prix: -1 })
.toArray();
// Transaction
const session = client.startSession();
try {
await session.startTransaction();
await db.collection('produits')
.updateOne(
{ _id: produit._id },
{ $inc: { stock: -1 } },
{ session }
);
await db.collection('commandes')
.insertOne({
produit: produit._id,
date: new Date()
}, { session });
await session.commitTransaction();
} catch (error) {
await session.abortTransaction();
} finally {
await session.endSession();
}
}
const express = require('express');
const { MongoClient } = require('mongodb');
const app = express();
app.get('/produits', async (req, res) => {
const client = await MongoClient.connect(
'mongodb://localhost:27017'
);
const db = client.db('ecommerce');
const produits = await db.collection('produits')
.find({})
.toArray();
res.json(produits);
});
app.post('/produits', async (req, res) => {
const client = await MongoClient.connect(
'mongodb://localhost:27017'
);
const db = client.db('ecommerce');
const result = await db.collection('produits')
.insertOne(req.body);
res.json(result);
});
const mongoose = require('mongoose');
// Définir un schéma
const ProduitSchema = new mongoose.Schema({
nom: { type: String, required: true },
prix: { type: Number, min: 0 },
stock: { type: Number, default: 0 },
categorie: String,
created_at: {
type: Date,
default: Date.now
}
});
// Méthodes personnalisées
ProduitSchema.methods.diminuerStock =
async function(quantite) {
this.stock -= quantite;
return this.save();
};
const Produit = mongoose.model('Produit',
ProduitSchema);
// Utilisation
async function main() {
const produit = new Produit({
nom: 'Laptop',
prix: 999.99,
stock: 50
});
await produit.save();
await produit.diminuerStock(1);
}
// Statistiques de ventes par catégorie et mois
db.ventes.aggregate([
{
$match: {
date: {
$gte: new Date('2024-01-01'),
$lt: new Date('2025-01-01')
}
}
},
{
$group: {
_id: {
mois: { $month: '$date' },
categorie: '$categorie'
},
total_ventes: { $sum: '$montant' },
nb_ventes: { $sum: 1 },
panier_moyen: {
$avg: '$montant'
}
}
},
{
$project: {
mois: '$_id.mois',
categorie: '$_id.categorie',
total_ventes: 1,
nb_ventes: 1,
panier_moyen: {
$round: ['$panier_moyen', 2]
}
}
},
{
$sort: {
mois: 1,
total_ventes: -1
}
}
])