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 mongod
Befehl 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 MongoClient
Klasse 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 Main
Methode 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 GetCollection
Methode eine Auflistungsinstanz zurück.
var collection = db.GetCollection ("Autoren");
Fügen Sie der Sammlung Dokumente hinzu
Als Nächstes erstellen wir eine Instanz der Author
Klasse und weisen ihren FirstName
und LastName
Eigenschaften Werte zu .
Autor Autor = neuer Autor{
Id = 1,
Vorname,
Familienname, Nachname
};
Verwenden Sie die folgende Anweisung, um die Instanz der Author
Klasse in die Auflistung einzufügen .
collection.InsertOne (Autor);
Beachten Sie, dass Sie mit der Methode InsertMany
oder mehrere Dokumente gleichzeitig einfügen können InsertManyAsync
. Die folgende Codeliste zeigt, wie die InsertMany
Methode 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 BsonDocument
Klasse 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, ListDatabasesAsync
um 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.