Programmering

Sådan arbejder du med MongoDB i .NET

MongoDB er en populær, open source, skalerbar NoSQL-database, der giver høj kapacitet til dine datadrevne applikationer. I modsætning til relationsdatabaser som SQL Server, Oracle og MySQL, der gemmer data i tabeller i henhold til et stift skema, gemmer MongoDB data i dokumenter med fleksibelt skema. Der er mange sådanne ikke-relationelle databaser, herunder CouchDB, RavenDB og Couchbase. Jeg kan dog godt lide MongoDB primært på grund af dets skalerbarhed, hastighed og dynamiske forespørgsel.

MongoDB bruger BSON-formatet under emhætten til at repræsentere JSON-dokumenterne i hjertet af datalageret. BSON eller "Binary JSON" er et let og effektivt binært kodet dataserialiseringsformat, der understøtter hurtig datatraversering og søgning. BSON tillader også MongoDB at understøtte datatyper - nemlig int, lang, dato, flydende punkt og decimal128 - ikke repræsenteret i JSON.

I MongoDB-dokumenter er en del af samlinger, på samme måde som en række er en del af en tabel i en relationsdatabase. Et dokument er i det væsentlige en samling af felt- og værdipar, som også kan indlejres. Bemærk, at en værdi i MongoDB kan være et dokument, et array af dokumenter, et array af BSON eller bare en BSON-type. Lad os se på, hvordan vi kan arbejde med MongoDB ved hjælp af C #.

Installer MongoDB, og opret et nyt projekt

Start med at downloade MongoDB-binærfiler. Pak binærfilerne ud til en mappe efter eget valg i dit system, og opret en separat mappe (i mit tilfælde C: \ data \ db) til dataene. Start derefter MongoDB ved at navigere til mappen, hvor MongoDB er installeret, og udføre mongod kommando i kommandopromptvinduet. Det skal starte MongoDB i port 27017 som standard.

Opret et nyt konsolapplikationsprojekt i Visual Studio, og installer pakken MongoDB.Driver via NuGet Package Manager-konsol med følgende kommando.

PM> Install-Package MongoDB.Driver

Dette installerer de følgende tre NuGet-pakker på én gang.

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

Opret forbindelse til din MongoDB-forekomst

For at oprette forbindelse til en MongoDB-forekomst ved dens standardport 27017 kan du bruge standardkonstruktøren til MongoClient klasse som vist nedenfor.

var klient = ny MongoClient ();

Overvej nu følgende klasse. Vi bruger denne klasse til at gemme data i MongoDB.

offentlig klasse Forfatter

    {

public int Id {get; sæt; }

offentlig streng Fornavn {get; sæt; }

public string LastName {get; sæt; }

    }

Opret en database og samling

Følgende kodeliste viser, hvordan du kan oprette en database og en samling inde i den og derefter indsætte et objekt inde i samlingen.

statisk ugyldigt Main (streng [] args)

    {           

var connectionString;

var klient = ny MongoClient (connectionString);

IMongoDatabase db = client.GetDatabase (“”);

Forfatterforfatter = ny forfatter

        {

Id = 1,

Fornavn,

Efternavn

        };

var collection = db.GetCollection (“forfattere”);

collection.InsertOne (forfatter);

Console.Read ();

    }

Bemærk, at følgende navneområder skal medtages i dit program.

ved hjælp af MongoDB.Bson;

ved hjælp af MongoDB.Driver;

Se nu Vigtigste metode i kodelisten ovenfor. Bemærk, at følgende udsagn opretter en ny database med navnet ”” hvis ingen findes ved dette navn.

IMongoDatabase db = client.GetDatabase (“”);

Tilsvarende opretter følgende udsagn en ny samling af "Forfatter" objekter, hvis der ikke findes nogen. I begge tilfælde GetCollection metoden returnerer en samlingsinstans.

var collection = db.GetCollection (“forfattere”);

Føj dokumenter til samlingen

Dernæst opretter vi en forekomst af Forfatter klasse og tildele værdier til dens Fornavn og Efternavn ejendomme.

Forfatterforfatter = ny forfatter

{

Id = 1,

Fornavn,

Efternavn

};

Brug udsagnet nedenfor til at indsætte forekomsten af Forfatter klasse ind i samlingen.

collection.InsertOne (forfatter);

Bemærk, at du kan indsætte flere dokumenter på samme tid ved hjælp af Indsæt mange eller InsertManyAsync metode. Følgende kodeliste illustrerer, hvordan Indsæt mange metode kan bruges.

ved hjælp af System;

ved hjælp af System.Collections.Generic;

ved hjælp af MongoDB.Bson;

ved hjælp af MongoDB.Driver;

statisk ugyldigt Main (streng [] args)

    {           

var connectionString;

var klient = ny MongoClient (connectionString);

IMongoDatabase db = client.GetDatabase (“”);

var collection = db.GetCollection (“Forfattere”);

var author1 = nyt BsonDocument

        {

{”Id”, 1},

{”Fornavn”, “Joydip”},

{”Efternavn”, “Kanjilal”}

        };

var author2 = nyt BsonDocument

        {

{”Id”, 2},

{”Fornavn”, “Steve”},

{”Efternavn”, “Smith”}

        };

var author3 = nyt BsonDocument

        {

{”Id”, 3},

{”Fornavn”, “Gary”},

{”Efternavn”, “Stevens”}

        };

var forfattere = ny liste ();

forfattere.Tilføj (forfatter1);

author.Add (author2);

author.Add (author3);

collection.InsertMany (forfattere);

Console.Read ();

    }

Det BsonDokument klasse i MongoDB.Bson-pakken bruges til at repræsentere et BSON-dokument. Følgende kodestykke viser, hvordan du kan vise navnene på de tilgængelige databaser i tilfælde af MongoDB, der kører i dit system.

var connectionString;

var klient = ny MongoClient (connectionString);

ved hjælp af (var cursor = client.ListDatabases ())

  {

var databaseDocuments = cursor.ToList ();

foreach (var db i databaseDocuments)

      {

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

      }

  }

Når du udfører ovenstående kodestykke, vil du se navnet på databasen (dvs. ") opført i konsolvinduet. Du kan også bruge den asynkrone metode, ListeDatabaserAsync, for at angive databasens navne som vist i kodestykket nedenfor.

privat statisk async Task DisplayDatabaseNames ()

    {

var connectionString;

var klient = ny MongoClient (connectionString);

prøve

        {

ved hjælp af (var cursor = await client.ListDatabasesAsync ())

            {

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

            }               

        }

fangst

        {

// Skriv din egen kode her for at håndtere undtagelser

        }

    }

MongoDB er en populær NoSQL-database, der har en fleksibel datamodel og skaleres yndefuldt. MongoDB yder understøttelse af vandret skalerbarhed ved hjælp af en teknik kendt som sharding. Jeg vil diskutere mere avancerede koncepter i MongoDB i fremtidige indlæg her. Indtil da vil du muligvis læse om MongoDB C # -driveren i MongoDB-dokumentationen.