Programmering

Hvordan jobbe med MongoDB i .NET

MongoDB er en populær, åpen kildekode, skalerbar NoSQL-database som gir høy gjennomstrømning for datadrevne applikasjoner. I motsetning til relasjonsdatabaser som SQL Server, Oracle og MySQL, som lagrer data i tabeller i henhold til et stivt skjema, lagrer MongoDB data i dokumenter med fleksibelt skjema. Det finnes mange slike ikke-relasjonelle databaser rundt, inkludert CouchDB, RavenDB og Couchbase. Imidlertid liker jeg MongoDB primært på grunn av dens skalerbarhet, hastighet og dynamiske spørringsfunksjoner.

MongoDB bruker BSON-formatet under panseret for å representere JSON-dokumentene i hjertet av datalageret. BSON eller “Binary JSON” er et lett og effektivt binær-kodet dataserialiseringsformat som støtter rask datatraversering og søk. BSON lar også MongoDB støtte datatyper - nemlig int, lang, dato, flytende punkt og desimal128 - ikke representert i JSON.

I MongoDB-dokumenter er en del av samlingene, på samme måte som en rad er en del av en tabell i en relasjonsdatabase. Et dokument er egentlig en samling felt- og verdipar, som også kan nestes. Merk at en verdi i MongoDB kan være et dokument, en rekke dokumenter, en rekke BSON eller bare en BSON-type. La oss se på hvordan vi kan jobbe med MongoDB ved hjelp av C #.

Installer MongoDB og opprett et nytt prosjekt

Start med å laste ned MongoDB-binærfiler. Pakk ut binærfiler til en mappe du ønsker i systemet ditt, og opprett en egen mappe (i mitt tilfelle C: \ data \ db) for dataene. For å starte MongoDB, naviger til mappen der MongoDB er installert og kjør mongod kommandoen i ledetekstvinduet. Det skal starte MongoDB i port 27017 som standard.

Opprett et nytt konsollapplikasjonsprosjekt i Visual Studio og installer MongoDB.Driver-pakken via NuGet Package Manager-konsollen med følgende kommando.

PM> Install-Package MongoDB.Driver

Dette vil installere følgende tre NuGet-pakker på en gang.

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

Koble til MongoDB-forekomsten

For å koble til en MongoDB-forekomst ved standardporten 27017, kan du bruke standardkonstruktøren til MongoClient klasse som vist nedenfor.

var klient = ny MongoClient ();

Vurder nå følgende klasse. Vi vil bruke denne klassen til å lagre data i MongoDB.

offentlig klasse Forfatter

    {

offentlig int Id {get; sett; }

offentlig streng Fornavn {get; sett; }

offentlig streng Etternavn {get; sett; }

    }

Lag en database og samling

Følgende kodeliste viser hvordan du kan lage en database og en samling i den og deretter sette inn et objekt i samlingen.

statisk tomrom Main (streng [] args)

    {           

var connectionString;

var klient = ny MongoClient (connectionString);

IMongoDatabase db = client.GetDatabase (“”);

Forfatterforfatter = ny forfatter

        {

Id = 1,

Fornavn,

Etternavn

        };

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

collection.InsertOne (forfatter);

Console.Read ();

    }

Merk at følgende navnerom skal være inkludert i programmet ditt.

bruker MongoDB.Bson;

bruker MongoDB.Driver;

Henvis nå til Hoved metode i kodelisten ovenfor. Merk at følgende utsagn oppretter ny database med navnet ”” hvis ingen eksisterer med det navnet.

IMongoDatabase db = client.GetDatabase (“”);

Tilsvarende oppretter følgende utsagn en ny samling av "Forfatter" objekter hvis ingen finnes. I begge tilfeller GetCollection metoden returnerer en samlingsforekomst.

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

Legg til dokumenter i samlingen

Deretter oppretter vi en forekomst av Forfatter klasse og tilordne verdier til sin Fornavn og Etternavn eiendommer.

Forfatterforfatter = ny forfatter

{

Id = 1,

Fornavn,

Etternavn

};

Bruk utsagnet nedenfor for å sette inn forekomsten av Forfatter klasse inn i samlingen.

collection.InsertOne (forfatter);

Vær oppmerksom på at du kan sette inn flere dokumenter samtidig ved hjelp av Sett inn mange eller InsertManyAsync metode. Følgende kodeliste illustrerer hvordan Sett inn mange metoden kan brukes.

bruker System;

ved hjelp av System.Collections.Generic;

bruker MongoDB.Bson;

bruker MongoDB.Driver;

statisk tomrom Main (streng [] args)

    {           

var connectionString;

var klient = ny MongoClient (connectionString);

IMongoDatabase db = client.GetDatabase (“”);

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

var author1 = nytt BsonDocument

        {

{”Id”, 1},

{”Fornavn”, “Joydip”},

{”Etternavn”, “Kanjilal”}

        };

var author2 = nytt BsonDocument

        {

{”Id”, 2},

{”Fornavn”, “Steve”},

{”Etternavn”, “Smith”}

        };

var author3 = nytt BsonDocument

        {

{”Id”, 3},

{”Fornavn”, “Gary”},

{”Etternavn”, “Stevens”}

        };

var forfattere = ny liste ();

author.Add (author1);

author.Add (author2);

author.Add (author3);

samling.InsertMany (forfattere);

Console.Read ();

    }

De BsonDocument klasse i MongoDB.Bson-pakken brukes til å representere et BSON-dokument. Følgende kodebit viser hvordan du kan vise navnene på databasene som er tilgjengelige i forekomsten av MongoDB som kjører i systemet ditt.

var connectionString;

var klient = ny MongoClient (connectionString);

bruker (var cursor = client.ListDatabases ())

  {

var databaseDocuments = cursor.ToList ();

foreach (var db i databaseDocuments)

      {

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

      }

  }

Når du utfører kodebiten ovenfor, ser du navnet på databasen (dvs. ") oppført i konsollvinduet. Du kan også bruke den asynkrone metoden, ListeDatabaserAsync, for å liste opp databasenavnene, som vist i kodebiten gitt nedenfor.

privat statisk async Oppgave DisplayDatabaseNames ()

    {

var connectionString;

var klient = ny MongoClient (connectionString);

prøve

        {

bruker (var cursor = await client.ListDatabasesAsync ())

            {

venter på cursor.ForEachAsync (document => Console.WriteLine (document.ToString ()));

            }               

        }

å fange

        {

// Skriv din egen kode her for å håndtere unntak

        }

    }

MongoDB er en populær NoSQL-database som har en fleksibel datamodell og skalerer elegant. MongoDB gir støtte for horisontal skalerbarhet ved hjelp av en teknikk kjent som sharding. Jeg vil diskutere mer avanserte konsepter i MongoDB i fremtidige innlegg her. Inntil da vil du kanskje lese om MongoDB C # -driveren i MongoDB-dokumentasjonen.

$config[zx-auto] not found$config[zx-overlay] not found