Einführung

MongoDB ist einer der bekannteren Vertreter der NoSQL-Datenbanken. Es ist eine dokumentenorientierte Datenbank. In diesem Artikel werden wir sehen wie man MongoDB in Windows aufsetzt und wie man es in .NET nutzen kann.

Der Beispielcode kann von der MSDN Sample Gallery runtergeladen werden.
 

MongoDB in Windows aufsetzen

 

Als erstes muss man die MongoDB-Dateien von folgender Seite herunterladen - http://www.mongodb.org/downloads und in einen Ordner entpackt werden. Als nächstes muss ein Ordner erstellt werden in dem MongoDB die Daten speichern kann. Dieser wird leider nicht automatisch erstellt.
Folgendes Statement muss in der Kommandozeile ausgeführt werden:
C:\> mkdir \data
C:\> mkdir \data\db

Als letzten Schritt muss man MongoDB nur noch laufen lassen. Dazu navigiert man zum MongoDB-Ordner und führt mongod.exe aus:
C:\> cd \my_mongo_dir\bin
C:\my_mongo_dir\bin>mongod

Nun sind wir startklar. Für das starten der Administrationskonsole nutzen folgenden Befehl:
C:\my_mongo_dir\bin>mongo

Man kann auch die web-basierte Administrationskonsole nutzen - http://localhost:28017/
Eine detaillierte Anleitung befindet sich auf der folgenden Seite - http://www.mongodb.org/display/DOCS/Quickstart+Windows

 

Arbeiten mit MongoDB

 

Aufsetzen der Datenbank


Für dieses Beispiel wollen wir eine Datenbank nutzen, die Autoren und ihre Bücher speichert. Um die Komplexität zu reduzieren nutzen wir eine einfache Konsolenanwendung, aber alles was du hier lernst kannst du auch in einer ASP.NET-Applikation benutzen. Lass uns unsere Datenbank und unsere Collection erstellen.
Falls noch nicht geschehen, starte mongo.exe aus der Kommandozeile:
C:\my_mongo_dir\bin>mongo

Falls du Hilfe zu irgendwelchen Kommandos brauchst, gebe einfach den folgenden Befehl ein:
> help

Dadurch wird eine Liste der serverweiten Kommandos bereitgestellt. Zur Zeit wollen wir einfach nur eine Datenbank erstellen:
> use tutorial

Falls die Datenbank bereits besteht wird man einfach zu dieser verbunden. Andernfalls wird diese erstellt.
Um mehr Datenbank-spezifische Befehle kennen zu lernen nutze den folgenden Befehl:
> db.help()

Der letzen Schritt ist die Erstellung einer Collection:
> db.createCollection(books)

Nun können wir mit dem eigentlich Code anfangen.

File - New - Project


Erstelle eine neue Konsolen-Applikation und gebe ihr einen beliebigen Namen. Für die Verbindung zu MongoDB kann man mehrere APIs benutzen. Mein persönlicher Favorit is der offiziele Driver, welcher auf NuGet erhätlich ist -http://www.nuget.org/List/Packages/mongocsharpdriver

Zu MongoDB verbinden


Als erstes stellen wir eine Verbindung zu der Datenbank, die wir vorher erstellt haben, her.
using System;
using System.Xml.Linq;
using MongoDB.Bson;
using MongoDB.Driver;
 
namespace WikiExampleConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            MongoServer mongo = MongoServer.Create();
            mongo.Connect();
 
            var db = mongo.GetDatabase("tutorial");
 
            ...
 
            mongo.Disconnect();
        }
    }
}

Dieser Code ist größtenteil selbsterkärend. Als erstes wird einMongoServer-Objekt erstellt, dass uns mit der tutorial Datenbank verbindet.
Am Ende sollte man nicht vergessen die Verbindung wieder zu schließen.

Verbinden zur Collection

Als zweites verbinden wir uns zu unserer book Collection.

...
using (mongo.RequestStart(db))
{
    var collection = db.GetCollection<BsonDocument>("books");
 
    ...
}
...

 

Speichern von Daten

 

using (mongo.RequestStart(db))
{
    var collection = db.GetCollection<BsonDocument>("books");
 
    BsonDocument book = new BsonDocument()
        .Add("_id", BsonValue.Create(BsonType.ObjectId))
        .Add("author", "Ernest Hemingway")
        .Add("title", "For Whom the Bell Tolls");
 
    collection.Insert(book);
}

Hier erstellen wir eine neue Instanz eines BsonDocument und fügen ihm eine ID, einen Autor und einen Buchtitel hinzu. Danach wird das Dokument in der Collection gespeichert. Unser Dokument sieht jetzt wie folgt aus:
{ "_id" : 7, "author" : "Ernest Hemingway", "title" : "For Whom the Bell Tolls" }

Datenabfrage

 

Wir haben nun unsere Daten am richtigen Platz und es wird Zeit ein paar Daten aus der Datenbank zu kriegen. Erstmal wollen wir nur den Namen des Autors und den Titel des Buches finden.
...
using (mongo.RequestStart(db))
{
    var collection = db.GetCollection<BsonDocument>("books");
 
    BsonDocument book = new BsonDocument()
         .Add("_id", BsonValue.Create(BsonType.ObjectId))
         .Add("author", "Ernest Hemingway")
         .Add("title", "For Whom the Bell Tolls");
 
    collection.Insert(book);
 
    var query = new QueryDocument("author", "Ernest Hemingway");
 
    foreach (BsonDocument item in collection.Find(query))
    {
        BsonElement author = item.GetElement("author");
        BsonElement title = item.GetElement("title");
 
        Console.WriteLine("Author: {0}, Title: {1}", author.Value, title.Value);
    }
 
    ...
}
...
Als erste erstellen wir unsere query. Diese ist ähnlich zu einer Schlüssel-Wert-Suche. Was für eine Überraschung, wir suchen nach Ernest Hemingway.
Die Find-Methode führt unsere Query aus und mit der BsonDocument-Instanz holen wir uns den Autor und den Buchtitel.
Jetzt haben wir unsere Daten. Aber was machen wir, wenn wir alle Daten haben wollen?
...
foreach (BsonElement element in item.Elements)
{
    Console.WriteLine("Name: {0}, Value: {1}", element.Name, element.Value);
}
...

Damit sind wir am Ende. Ich hoffe du hattest Spaß und hast auch ein bisschen was gelernt. Unten findest du den kompletten Code

Der komplette Code


 
01.using System;
02.using System.Xml.Linq;
03.using MongoDB.Bson;
04.using MongoDB.Driver;
05. 
06.namespace WikiExampleConsole
07.{
08.    class Program
09.    {
10.        static void Main(string[] args)
11.        {
12.            Console.WriteLine("Connect...");
13. 
14.            MongoServer mongo = MongoServer.Create();
15.            mongo.Connect();
16. 
17.            Console.WriteLine("Connected");
18.            Console.WriteLine();
19. 
20.            var db = mongo.GetDatabase("tutorial");
21. 
22.            using (mongo.RequestStart(db))
23.            {
24.                var collection = db.GetCollection<BsonDocument>("books");
25.                BsonDocument book = new BsonDocument()
26.                    .Add("_id", BsonValue.Create(BsonType.ObjectId))
27.                    .Add("author", "Ernest Hemingway")
28.                    .Add("title", "For Whom the Bell Tolls");
29. 
30.                collection.Insert(book);
31. 
32.                var query = new QueryDocument("author", "Ernest Hemingway");
33. 
34.                foreach (BsonDocument item in collection.Find(query))
35.                {
36.                    BsonElement author = item.GetElement("author");
37.                    BsonElement title = item.GetElement("title");
38. 
39.                    Console.WriteLine("Author: {0}, Title: {1}", author.Value, title.Value);
40. 
41.                    foreach (BsonElement element in item.Elements)
42.                    {
43.                        Console.WriteLine("Name: {0}, Value: {1}", element.Name, element.Value);
44.                    }
45.                }
46.            }
47.  
48.            Console.WriteLine();
49.            Console.Read();
50. 
51.            mongo.Disconnect();
52.        }
53.    }
54.}

Weitere Quellen


Siehe auch


Andere Sprachen

Dieser Artikel ist auch in den folgenden Sprachen verfügbar:

English (en-US)