So arbeiten Sie mit MongoDB in .NET

MongoDB ist eine beliebte Open-Source-NoSQL-Datenbank mit Skalierbarkeit, die einen hohen Durchsatz für Ihre datengesteuerten Anwendungen bietet. Im Gegensatz zu relationalen Datenbanken wie SQL Server, Oracle und MySQL, die Daten in Tabellen nach einem starren Schema speichern, speichert MongoDB Daten in Dokumenten mit flexiblem Schema. Es gibt viele solcher nicht relationalen Datenbanken, einschließlich CouchDB, RavenDB und Couchbase. Ich mag MongoDB jedoch hauptsächlich wegen seiner Skalierbarkeit, Geschwindigkeit und dynamischen Abfragefähigkeiten.

MongoDB verwendet das BSON-Format unter der Haube, um die JSON-Dokumente im Herzen des Datenspeichers darzustellen. BSON oder "Binary JSON" ist ein leichtes und effizientes binär codiertes Datenserialisierungsformat, das eine schnelle Datenübertragung und -suche unterstützt. Mit BSON kann MongoDB auch Datentypen unterstützen, nämlich int, long, date, gleitkomma und decimal128, die in JSON nicht dargestellt werden. 

In MongoDB sind Dokumente Teil von Sammlungen, ähnlich wie eine Zeile Teil einer Tabelle in einer relationalen Datenbank ist. Ein Dokument ist im Wesentlichen eine Sammlung von Feld- und Wertepaaren, die auch verschachtelt werden können. Beachten Sie, dass ein Wert in MongoDB ein Dokument, ein Array von Dokumenten, ein Array von BSON oder nur ein BSON-Typ sein kann. Schauen wir uns an, wie wir mit MongoDB mit C # arbeiten können. 

Installieren Sie MongoDB und erstellen Sie ein neues Projekt

Laden Sie zunächst die MongoDB-Binärdateien herunter. Entpacken Sie die Binärdateien in einen Ordner Ihrer Wahl in Ihrem System und erstellen Sie einen separaten Ordner (in meinem Fall C: \ data \ db) für die Daten. Um MongoDB zu starten, navigieren Sie zu dem Ordner, in dem MongoDB installiert ist, und führen Sie den mongodBefehl im Eingabeaufforderungsfenster aus. Das sollte MongoDB standardmäßig an Port 27017 starten.

Erstellen Sie ein neues Konsolenanwendungsprojekt in Visual Studio und installieren Sie das MongoDB.Driver-Paket über die NuGet Package Manager-Konsole mit dem folgenden Befehl.  

PM> Install-Package MongoDB.Driver

Dadurch werden die folgenden drei NuGet-Pakete auf einmal installiert.

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

Stellen Sie eine Verbindung zu Ihrer MongoDB-Instanz her

Um eine Verbindung zu einer MongoDB-Instanz an ihrem Standardport 27017 herzustellen, können Sie den Standardkonstruktor der MongoClientKlasse wie unten gezeigt verwenden.

var client = new MongoClient ();

Betrachten Sie nun die folgende Klasse. Wir werden diese Klasse verwenden, um Daten in MongoDB zu speichern.

öffentliche Klasse Autor

    {

        public int Id {get; einstellen; }}

        öffentliche Zeichenfolge Vorname {get; einstellen; }}

        öffentlicher String Nachname {get; einstellen; }}

    }}

Erstellen Sie eine Datenbank und eine Sammlung

Die folgende Codeliste zeigt, wie Sie eine Datenbank und eine Sammlung darin erstellen und dann ein Objekt in die Sammlung einfügen können.

statische Leere Main (string [] args)

    {           

        var connectionString;

        var client = neuer MongoClient (connectionString);           

        IMongoDatabase db = client.GetDatabase ("");

        Autor Autor = neuer Autor

        {

            Id = 1,

            Vorname,

            Familienname, Nachname

        };

        var collection = db.GetCollection ("Autoren");

        collection.InsertOne (Autor);

        Console.Read ();

    }}

Beachten Sie, dass die folgenden Namespaces in Ihrem Programm enthalten sein sollten.

using MongoDB.Bson;

using MongoDB.Driver;

Beziehen Sie sich nun auf die MainMethode in der obigen Codeliste. Beachten Sie, dass die folgende Anweisung eine neue Datenbank mit dem Namen erstellt, ””wenn keine mit diesem Namen vorhanden ist.

IMongoDatabase db = client.GetDatabase(“”);

In ähnlicher Weise erstellt die folgende Anweisung eine neue Sammlung von ”Author”Objekten, falls keine vorhanden ist. In beiden Fällen gibt die GetCollectionMethode eine Auflistungsinstanz zurück.

var collection = db.GetCollection ("Autoren");

Fügen Sie der Sammlung Dokumente hinzu

Als Nächstes erstellen wir eine Instanz der AuthorKlasse und weisen ihren FirstNameund LastNameEigenschaften Werte zu .

Autor Autor = neuer Autor

{

    Id = 1,

    Vorname,

    Familienname, Nachname

};

Verwenden Sie die folgende Anweisung, um die Instanz der AuthorKlasse in die Auflistung einzufügen .

collection.InsertOne (Autor);

Beachten Sie, dass Sie mit der Methode InsertManyoder mehrere Dokumente gleichzeitig einfügen können InsertManyAsync. Die folgende Codeliste zeigt, wie die InsertManyMethode verwendet werden kann.

using System;

using System.Collections.Generic;

using MongoDB.Bson;

using MongoDB.Driver;

statische Leere Main (string [] args)

    {           

        var connectionString;

        var client = neuer MongoClient (connectionString);           

        IMongoDatabase db = client.GetDatabase ("");

        var collection = db.GetCollection ("Autoren");

        var author1 = neues BsonDocument

        {

            {”Id”, 1},

            {"Vorname", "Joydip"},

            {”Nachname”, “Kanjilal”}

        };

        var author2 = neues BsonDocument

        {

            {”Id”, 2},

            {"Vorname", "Steve"},

            {”Nachname”, “Smith”}

        };

      var author3 = neues BsonDocument

        {

            {”Id”, 3},

            {"Vorname", "Gary"},

            {”Nachname”, “Stevens”}

        };

        var Autoren = neue Liste ();

        Autoren.Add (author1);

        Autoren.Add (author2);

        Autoren.Add (author3);

        collection.InsertMany (Autoren);

        Console.Read ();

    }}

Die BsonDocumentKlasse im MongoDB.Bson-Paket wird zur Darstellung eines BSON-Dokuments verwendet. Das folgende Codefragment zeigt, wie Sie die Namen der Datenbanken anzeigen können, die in der Instanz von MongoDB verfügbar sind, die auf Ihrem System ausgeführt wird.

var connectionString;

var client = neuer MongoClient (connectionString);           

  using (var cursor = client.ListDatabases ())

  {

    var databaseDocuments = cursor.ToList ();

    foreach (var db in databaseDocuments)

      {

        Console.WriteLine (db ["Name"]. ToString ());

      }}

  }}

Wenn Sie das obige Codefragment ausführen, wird der Name der Datenbank (dh „ ) im Konsolenfenster angezeigt. Sie können auch die asynchrone Methode verwenden, ListDatabasesAsyncum die Datenbanknamen aufzulisten, wie im folgenden Codeausschnitt gezeigt.

private statische asynchrone Aufgabe DisplayDatabaseNames ()

    {

        var connectionString;

        var client = neuer MongoClient (connectionString);

        Versuchen

        {

            using (var cursor = warte auf client.ListDatabasesAsync ())

            {

                warte auf cursor.ForEachAsync (document => Console.WriteLine (document.ToString ()));

            }}               

        }}

        Fang

        {

            // Schreiben Sie hier Ihren eigenen Code, um Ausnahmen zu behandeln

        }}

    }}

MongoDB ist eine beliebte NoSQL-Datenbank, die über ein flexibles Datenmodell verfügt und elegant skaliert werden kann. MongoDB unterstützt die horizontale Skalierbarkeit mithilfe einer als Sharding bezeichneten Technik. Ich werde in zukünftigen Beiträgen hier weiterführende Konzepte in MongoDB diskutieren. Bis dahin möchten Sie möglicherweise den MongoDB C # -Treiber in der MongoDB-Dokumentation nachlesen.