Programiranje

Kako delati z MongoDB v .NET

MongoDB je priljubljena, odprtokodna zbirka podatkov NoSQL z obsegom, ki zagotavlja visoko prepustnost za vaše podatkovno vodene aplikacije. Za razliko od relacijskih baz podatkov, kot so SQL Server, Oracle in MySQL, ki shranjujejo podatke v tabelah po togi shemi, MongoDB podatke shranjuje v dokumente s prilagodljivo shemo. Obstaja veliko takih nerelacijskih zbirk podatkov, vključno z CouchDB, RavenDB in Couchbase. Vendar mi je MongoDB všeč predvsem zaradi razširljivosti, hitrosti in dinamičnih zmožnosti poizvedb.

MongoDB uporablja format BSON pod pokrovom za predstavitev dokumentov JSON v središču shrambe podatkov. BSON ali »Binarni JSON« je lahka in učinkovita binarno kodirana oblika serializacije podatkov, ki podpira hitro prehajanje podatkov in iskanje. BSON prav tako omogoča MongoDB, da podpira tipe podatkov - in sicer int, long, date, floating point in decimal128 - ki niso predstavljeni v JSON.

V MongoDB so dokumenti del zbirk, podobno kot je vrstica del tabele v relacijski bazi podatkov. Dokument je v bistvu zbirka parov polj in vrednosti, ki jih je mogoče tudi ugnezditi. Upoštevajte, da je vrednost v MongoDB lahko dokument, niz dokumentov, matrika BSON ali samo vrsta BSON. Poglejmo, kako lahko delamo z MongoDB s pomočjo C #.

Namestite MongoDB in ustvarite nov projekt

Začnite s prenosom binarnih datotek MongoDB. Razpakirajte binarne datoteke v mapo po vašem sistemu in ustvarite ločeno mapo (v mojem primeru C: \ data \ db) za podatke. Nato, da zaženete MongoDB, se pomaknite do mape, v kateri je nameščen MongoDB, in zaženite mongod ukaz v oknu ukaznega poziva. To bi moralo privzeto zagnati MongoDB na vratih 27017.

Ustvarite nov projektni program konzole v Visual Studio in z naslednjim ukazom namestite paket MongoDB.Driver prek konzole NuGet Package Manager.

PM> Namestite-paket MongoDB.Driver

S tem boste naenkrat namestili naslednje tri pakete NuGet.

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

Povežite se s svojim primerkom MongoDB

Če se želite povezati s primerkom MongoDB na privzetih vratih 27017, lahko uporabite privzeti konstruktor MongoClient razred, kot je prikazano spodaj.

var odjemalec = nov MongoClient ();

Zdaj razmislite o naslednjem razredu. Ta razred bomo uporabili za shranjevanje podatkov v MongoDB.

javni razred Avtor

    {

public int Id {get; set; }

javni niz FirstName {get; set; }

javni niz LastName {get; set; }

    }

Ustvarite bazo podatkov in zbirko

Naslednji seznam kod prikazuje, kako lahko ustvarite bazo podatkov in zbirko v njej ter nato v zbirko vstavite predmet.

statična praznina Main (string [] args)

    {           

var connectionString;

var odjemalec = nov MongoClient (connectionString);

IMongoDatabase db = client.GetDatabase (“”);

Avtor avtor = nov avtor

        {

Id = 1,

Ime,

Priimek

        };

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

collection.InsertOne (avtor);

Console.Read ();

    }

Upoštevajte, da bi morali biti v vaš program vključeni naslednji imenski prostori.

z uporabo MongoDB.Bson;

z uporabo MongoDB.Driver;

Zdaj se obrnite na Glavna v zgornjem seznamu kod. Upoštevajte, da naslednji stavek ustvari novo bazo podatkov z imenom ”” če nobeno ne obstaja s tem imenom.

IMongoDatabase db = client.GetDatabase (“”);

Naslednja izjava podobno ustvari novo zbirko "Avtor" predmeti, če noben ne obstaja. V obeh primerih je GetCollection metoda vrne primerek zbirke.

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

Dodajte dokumente v zbirko

Nato ustvarimo primerek datoteke Avtor razredu in mu dodelite vrednosti Ime in Priimek lastnosti.

Avtor avtor = nov avtor

{

Id = 1,

Ime,

Priimek

};

Uporabite spodnji stavek, da vstavite primerek Avtor razred v zbirko.

collection.InsertOne (avtor);

Upoštevajte, da lahko hkrati vstavite več dokumentov hkrati InsertMany ali InsertManyAsync metoda. Naslednji seznam kod ponazarja, kako InsertMany metoda.

z uporabo sistema;

z uporabo System.Collections.Generic;

z uporabo MongoDB.Bson;

z uporabo MongoDB.Driver;

statična praznina Main (string [] args)

    {           

var connectionString;

var odjemalec = nov MongoClient (connectionString);

IMongoDatabase db = client.GetDatabase (“”);

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

var author1 = nov BsonDocument

        {

{"Id", 1},

{"Ime", "Joydip"},

{”Priimek”, “Kanjilal”}

        };

var author2 = nov BsonDocument

        {

{"Id", 2},

{"Ime", "Steve"},

{"Priimek", "Smith"}

        };

var author3 = nov BsonDocument

        {

{"Id", 3},

{"Ime", "Gary"},

{”Priimek”, “Stevens”}

        };

var avtorji = nov seznam ();

avtorji.Dodaj (avtor1);

avtorji.Dodaj (avtor2);

avtorji.Dodaj (avtor3);

collection.InsertMany (avtorji);

Console.Read ();

    }

The BsonDocument razreda v paketu MongoDB.Bson se uporablja za predstavitev dokumenta BSON. Naslednji delček kode prikazuje, kako lahko prikažete imena baz podatkov, ki so na voljo v primerku MongoDB, ki se izvaja v vašem sistemu.

var connectionString;

var odjemalec = nov MongoClient (connectionString);

z uporabo (var kurzor = client.ListDatabases ())

  {

var databaseDocuments = cursor.ToList ();

foreach (var db v zbirki podatkovDocuments)

      {

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

      }

  }

Ko zaženete zgornji delček kode, boste videli ime baze podatkov (tj. »), ki so navedeni v oknu konzole. Uporabite lahko tudi asinhrono metodo, ListDatabasesAsync, da navedete imena baz podatkov, kot je prikazano v spodnjem delčku kode.

zasebno statično asinh. opravilo DisplayDatabaseNames ()

    {

var connectionString;

var odjemalec = nov MongoClient (connectionString);

poskusite

        {

z uporabo (var cursor = await client.ListDatabasesAsync ())

            {

počakajte kurzor.ForEachAsync (dokument => Console.WriteLine (document.ToString ()));

            }               

        }

ulov

        {

// Tukaj napišite svojo kodo za obravnavo izjem

        }

    }

MongoDB je priljubljena baza podatkov NoSQL, ki ima prilagodljiv podatkovni model in graciozno prilagaja. MongoDB nudi podporo za vodoravno razširljivost s tehniko, znano kot ostrenje. O naprednejših konceptih v MongoDB bom razpravljal v prihodnjih objavah tukaj. Do takrat boste morda želeli prebrati gonilnik MongoDB C # v dokumentaciji MongoDB.

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