Comment travailler avec MongoDB dans .NET

MongoDB est une base de données NoSQL évolutive et open source populaire qui fournit un débit élevé pour vos applications basées sur les données. Contrairement aux bases de données relationnelles telles que SQL Server, Oracle et MySQL, qui stockent les données dans des tables selon un schéma rigide, MongoDB stocke les données dans des documents avec un schéma flexible. Il existe de nombreuses bases de données non relationnelles de ce type, notamment CouchDB, RavenDB et Couchbase. Cependant, j'aime MongoDB principalement en raison de son évolutivité, de sa vitesse et de ses capacités de requête dynamique.

MongoDB utilise le format BSON sous le capot pour représenter les documents JSON au cœur du magasin de données. BSON ou «Binary JSON» est un format de sérialisation de données codé en binaire léger et efficace qui prend en charge la traversée et les recherches rapides des données. BSON permet également à MongoDB de prendre en charge les types de données (int, long, date, virgule flottante et décimal128) non représentés dans JSON. 

Dans MongoDB, les documents font partie de collections, de la même manière qu'une ligne fait partie d'une table dans une base de données relationnelle. Un document est essentiellement une collection de paires de champs et de valeurs, qui peuvent également être imbriquées. Notez qu'une valeur dans MongoDB peut être un document, un tableau de documents, un tableau de BSON ou simplement un type BSON. Voyons comment nous pouvons travailler avec MongoDB en utilisant C #. 

Installez MongoDB et créez un nouveau projet

Commencez par télécharger les binaires MongoDB. Décompressez les binaires dans un dossier de votre choix dans votre système et créez un dossier séparé (dans mon cas C: \ data \ db) pour les données. Ensuite, pour démarrer MongoDB, accédez au dossier dans lequel MongoDB est installé et exécutez la mongodcommande dans la fenêtre d'invite de commande. Cela devrait démarrer MongoDB sur le port 27017 par défaut.

Créez un nouveau projet d'application console dans Visual Studio et installez le package MongoDB.Driver via la console NuGet Package Manager avec la commande suivante.  

PM> Install-Package MongoDB.Driver

Cela installera les trois packages NuGet suivants en une seule fois.

  • MongoDB.Bson
  • MongoDB.Driver.Core
  • MongoDB.Driver

Connectez-vous à votre instance MongoDB

Pour vous connecter à une instance MongoDB sur son port par défaut 27017, vous pouvez utiliser le constructeur par défaut de la MongoClientclasse comme indiqué ci-dessous.

client var = new MongoClient ();

Considérons maintenant la classe suivante. Nous utiliserons cette classe pour stocker des données dans MongoDB.

public class Auteur

    {

        public int Id {get; ensemble; }

        chaîne publique FirstName {get; ensemble; }

        chaîne publique LastName {get; ensemble; }

    }

Créer une base de données et une collection

La liste de code suivante montre comment créer une base de données et une collection à l'intérieur, puis insérer un objet dans la collection.

static void Main (string [] args)

    {           

        var connectionString;

        var client = new MongoClient (connectionString);           

        IMongoDatabase db = client.GetDatabase ("");

        Auteur auteur = nouvel auteur

        {

            Id = 1,

            Prénom,

            Nom de famille

        };

        var collection = db.GetCollection («auteurs»);

        collection.InsertOne (auteur);

        Console.Read ();

    }

Notez que les espaces de noms suivants doivent être inclus dans votre programme.

using MongoDB.Bson;

using MongoDB.Driver;

Reportez-vous maintenant à la Mainméthode dans la liste des codes ci-dessus. Notez que l'instruction suivante crée une nouvelle base de données nommée ””si aucune n'existe sous ce nom.

IMongoDatabase db = client.GetDatabase(“”);

De même, l'instruction suivante crée une nouvelle collection d' ”Author”objets s'il n'en existe pas. Dans les deux cas, la GetCollectionméthode renvoie une instance de collection.

var collection = db.GetCollection («auteurs»);

Ajouter des documents à la collection

Ensuite, nous créons une instance de la Authorclasse et attribuons des valeurs à ses propriétés FirstNameet LastName.

Auteur auteur = nouvel auteur

{

    Id = 1,

    Prénom,

    Nom de famille

};

Utilisez l'instruction ci-dessous pour insérer l'instance de la Authorclasse dans la collection.

collection.InsertOne (auteur);

Notez que vous pouvez insérer plusieurs documents en même temps à l'aide de la méthode InsertManyou InsertManyAsync. La liste de codes suivante illustre comment la InsertManyméthode peut être utilisée.

en utilisant le système;

using System.Collections.Generic;

using MongoDB.Bson;

using MongoDB.Driver;

static void Main (string [] args)

    {           

        var connectionString;

        var client = new MongoClient (connectionString);           

        IMongoDatabase db = client.GetDatabase ("");

        var collection = db.GetCollection («Auteurs»);

        var author1 = nouveau BsonDocument

        {

            {"Id", 1},

            {"Firstname", "Joydip"},

            {"Lastname", "Kanjilal"}

        };

        var author2 = nouveau BsonDocument

        {

            {"Id", 2},

            {"Firstname", "Steve"},

            {"Lastname", "Smith"}

        };

      var author3 = nouveau BsonDocument

        {

            {"Id", 3},

            {"Firstname", "Gary"},

            {"Nom", "Stevens"}

        };

        var auteurs = nouvelle liste ();

        auteurs.Ajouter (auteur1);

        auteurs.Ajouter (auteur2);

        auteurs.Ajouter (auteur3);

        collection.InsertMany (auteurs);

        Console.Read ();

    }

La BsonDocumentclasse du package MongoDB.Bson est utilisée pour représenter un document BSON. L'extrait de code suivant montre comment afficher les noms des bases de données disponibles dans l'instance de MongoDB s'exécutant sur votre système.

var connectionString;

var client = new MongoClient (connectionString);           

  en utilisant (var cursor = client.ListDatabases ())

  {

    var databaseDocuments = cursor.ToList ();

    foreach (var db dans databaseDocuments)

      {

        Console.WriteLine (db [“nom”]. ToString ());

      }

  }

Lorsque vous exécutez l'extrait de code ci-dessus, vous verrez le nom de la base de données (c'est-à-dire « ) répertorié dans la fenêtre de la console. Vous pouvez également utiliser la méthode asynchrone,, ListDatabasesAsyncpour répertorier les noms de base de données, comme indiqué dans l'extrait de code ci-dessous.

DisplayDatabaseNames () de tâche asynchrone statique privée

    {

        var connectionString;

        var client = new MongoClient (connectionString);

        essayer

        {

            en utilisant (var cursor = wait client.ListDatabasesAsync ())

            {

                attendez le curseur.ForEachAsync (document => Console.WriteLine (document.ToString ()));

            }               

        }

        capture

        {

            // Écrivez votre propre code ici pour gérer les exceptions

        }

    }

MongoDB est une base de données NoSQL populaire qui possède un modèle de données flexible et évolue avec élégance. MongoDB prend en charge l'évolutivité horizontale à l'aide d'une technique connue sous le nom de partitionnement. Je discuterai de concepts plus avancés dans MongoDB dans de futurs articles ici. Jusque-là, vous voudrez peut-être lire le pilote MongoDB C # dans la documentation MongoDB.