Heim  >  Artikel  >  Backend-Entwicklung  >  Teilen Sie detaillierte Beispiele für die Verwendung von MongoDB in .Net

Teilen Sie detaillierte Beispiele für die Verwendung von MongoDB in .Net

零下一度
零下一度Original
2017-05-24 17:25:252356Durchsuche

Ich habe kürzlich online recherchiert und festgestellt, dass Artikel über die Verwendung von Mongodb in .net entweder frühe Treiberversionen sind oder nur sehr wenige Informationen enthalten. Deshalb habe ich einen Aufsatz geschrieben, um sie ausführlich aufzuzeichnen Wie man MongoDB in .Net verwendet. Freunde, die ein Tutorial zur Verwendung von MongoDB benötigen, können es sich unten ansehen.

Was ist MongoDB?

MongoDB basiert auf der Dokumentenspeicherung (keine Tabellen) und ist eine Kreuzung zwischen einer relationalen und einer nicht relationalen Datenbank Datenbank Die Produkte unter ihnen sind die funktionsreichsten unter den nicht relationalen Datenbanken und den relationalen Datenbanken am ähnlichsten. Die unterstützte Datenstruktur ist sehr locker und hat ein BSON-Format, das JSON ähnelt, sodass komplexere Datentypen gespeichert werden können. Das größte Merkmal von Mongo ist, dass die von ihm unterstützte Abfragesprache in gewisser Weise einer objektorientierten Abfragesprache ähnelt. Sie kann die meisten Funktionen ähnlich wie Einzeltabellenabfragen in relationalen Datenbanken implementieren von Daten. Mongo löst hauptsächlich das Problem der Zugriffseffizienz großer Datenmengen. Da Mongo hauptsächlich die Massenspeicherung von Daten unterstützt, verfügt Mongo auch über ein hervorragendes verteiltes Dateisystem, GridFS, das die Massenspeicherung von Daten unterstützen kann. Mongo erfreut sich großer Beliebtheit, da es komplexe Datenstrukturen unterstützen kann und über leistungsstarke Datenabfragefunktionen verfügt.

BSON ist das Datenspeicherformat von MongoDB. Jeder kennt JSON, aber was ist BSON? BSON basiert auf dem JSON-Format. Der Hauptgrund für die Wahl von JSON für die Transformation ist die Vielseitigkeit von JSON und die schemalosen Eigenschaften von JSON.

BSON hat die folgenden Eigenschaften

1. Schnellere Durchlaufgeschwindigkeit

Für das JSON-Format im Allgemeinen Sprich: Eine zu große JSON-Struktur führt dazu, dass die Datendurchquerung sehr langsam ist. Wenn Sie in JSON ein Dokument zum Lesen von Daten überspringen möchten, müssen Sie das Dokument scannen und einen problematischen Datenstrukturabgleich durchführen, z. B. einen Klammerabgleich. Eine wesentliche Verbesserung von BSON gegenüber JSON besteht darin, dass die Länge jedes Elements gespeichert wird im Kopf des Elements, sodass Sie nur die Länge des Elements lesen müssen, um direkt zum angegebenen Punkt zum Lesen zu suchen.

2. Einfachere Bedienung

Für JSON ist die Datenspeicherung untypisiert. Beispielsweise möchten Sie einen Grundwert von 9 auf 10 ändern, da aus einem Zeichen wird zwei, sodass der gesamte Inhalt danach möglicherweise um eine Position nach hinten verschoben werden muss. Mit BSON können Sie diese Spalte als numerische Spalte angeben. Unabhängig davon, ob die Zahl von 9 auf 10 oder 100 ansteigt, ändern wir nur das Bit, in dem die Zahl gespeichert ist, was nicht dazu führt, dass sich die Gesamtlänge der Daten ändert größer werden. Wenn in MongoDB die Zahl natürlich von einer Ganzzahl auf eine lange Ganzzahl ansteigt, erhöht sich natürlich immer noch die Gesamtdatenlänge.

3. Zusätzliche Datentypen hinzugefügt

JSON ist ein sehr praktisches Datenaustauschformat, aber seine Typen sind relativ begrenzt. BSON fügt auf seiner Basis den Datentyp „Byte-Array“ hinzu. Dadurch entfällt die Notwendigkeit, Binärdaten vor dem Speichern in JSON in Base64 zu konvertieren. Der Rechenaufwand und die Datengröße werden erheblich reduziert. Natürlich hat BSON aufgrund des Typkonzepts manchmal keinen Platzvorteil gegenüber JSON.

Installation von MongoDB unter Windows

Nach dem Festlegen des Installationspfads klicken Sie auf „Weiter“, bis die Installation abgeschlossen ist . Die größte Gefahr besteht darin, dass wir bei der Installation des MongoDB-Dienstes ausführlich über einige Konfigurationsvorgänge nach der MongoDB-Installation sprechen

1. Erstellen Sie den Datenbankpfad (Datenverzeichnis), den Protokollpfad (Protokollverzeichnis) und die Protokolldatei (mongo.log-Datei) im Stammverzeichnis), Konfigurationspfad (conf-Verzeichnis) Mein Installationspfad ist: D:Programmemongodb

2. Erstellen Sie die Konfigurationsdatei mongo.conf im conf-Verzeichnis lautet wie folgt:

logpath=D:\Program Files\mongodb\logs\mongodb.log #日志输出文件路径

logappend=true #错误日志采用追加模式,配置这个选项后mongodb的日志会追加到现有的日志文件,而不是从新创建一个新文件

journal=true #启用日志文件,默认启用

quiet=true #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false

port=27017 #端口号 默认为27017

auth=true #启用验证 需要用户名密码

Nachdem Sie die beiden oben genannten Schritte konfiguriert haben, können Sie MongoDB starten

Führen Sie den CMD-Eingabebefehl aus (beachten Sie den Pfad von Mongod)

mongod --config " D:\Program Files\mongodb\data \conf\mongo.conf"

3. Erstellen und starten Sie den MongoDB-Dienst

Wenn es nicht jedes Mal ziemlich mühsam ist, Schritt 3 auszuführen, befolgen Sie den folgenden Befehl, um den MongoDB-Dienst zu erstellen und zu starten, und Sie können das Starten und Herunterfahren von MongoDB verwalten über den Windows-Dienst


mongod --config " D:\Program Files\mongodb\data \conf\mongo.conf" --install --serviceName "MongoDB"

net start MongoDB

Um zu testen, ob es erfolgreich ist, können Sie http://localhost:27017/ in den Browser eingeben. Wenn das folgende Bild erscheint, Dies bedeutet, dass die Dienstinstallation erfolgreich war

Wenn Sie den MongoDB-Dienst deinstallieren müssen, führen Sie ihn in CMD aus


mongod.exe --remove --serviceName "MongoDB"

Nachdem die vorbereitenden Vorbereitungsarbeiten abgeschlossen sind, können Sie mit dem Codieren beginnen

Wie man in .net läuft Bei Verwendung von MongoDB

Stellen Sie zunächst MongoDB vor. Bson.dll, MongoDB.Driver.dll, MongoDB.Driver.Core.dll in das Projekt Ich verwende Version 2.0 und jetzt sind viele Artikel Dies ist eine Einführung in die Verwendung von Version 1+, was auch der Zweck des Schreibens dieses Artikels ist . Nach der Einführung der Treiber-DLL können Sie mit dem Codieren beginnen

Ein Teil des Codes lautet wie folgt

private static MongoClient client;

private static IMongoDatabase database;

//本地配置

private const string MongoDBConnectionStr = "mongodb://localhost";

//数据库名称

private static string DefaultDataBaseName = "Test";

 

 

public MongoDBHelper()

{

 GetConnection(DefaultDataBaseName);

}

 

/// <summary>

/// 构造函数 指定数据库

/// </summary>

/// <param name="dataBaseName"></param>

public MongoDBHelper(string dataBaseName)

{

 GetConnection(dataBaseName);

}

 
private static void GetConnection(string dataBaseName)

{

 client = new MongoClient(MongoDBConnectionStr);

 database = client.GetDatabase(dataBaseName);

}

/// <summary>

/// 异步插入一条数据,手动输入collection name

/// </summary>

public Task InsertAsync<T>(string collectionName, T obj)

{
 if (database == null)

 {

  throw new Exception("没有指定数据库");

 }

 var collection = database.GetCollection<T>(collectionName);

 return collection.InsertOneAsync(obj);

}

 

/// <summary>

/// 异步插入一条数据,采用类型T的完全限定名作为collection name

/// </summary>

public Task InsertAsync<T>(T obj)

{

 return InsertAsync(typeof(T).FullName, obj);

}

 
/// <summary>

/// 异步插入多条数据,手动输入collection name

/// </summary>

public Task BatchInsertAsync<T>(string collectionName, IEnumerable<T> objs)

{

 if (database == null)

 {

  throw new Exception("没有指定数据库");

 }

 if (objs == null)

 {

  throw new ArgumentException();

 }

 var collection = database.GetCollection<T>(collectionName);

 return collection.InsertManyAsync(objs);

}

 

/// <summary>

/// 异步插入多条数据,采用类型T的完全限定名作为collection name

/// </summary>

public Task BatchInsertAsync<T>(IEnumerable<T> objs)

{

 return BatchInsertAsync(typeof(T).FullName, objs);

}

 

/// <summary>

/// 插入一条数据

/// </summary>

public void Insert<T>(T obj)

{

 InsertAsync(obj).Wait();

}

 

/// <summary>

/// 插入多条数据

/// </summary>

public void Insert<T>(IEnumerable<T> objs)

{

 BatchInsertAsync(objs).Wait();

}

/// <summary>

/// MongoDB C# Driver的Find方法,返回IFindFluent。手动输入collection name

/// </summary>

public IFindFluent<T, T> Find<T>(string collectionName, FilterDefinition<T> filter, FindOptions options = null)

{

 if (database == null)

 {
  throw new Exception("没有指定数据库");

 }
 var collection = database.GetCollection<T>(collectionName);

 return collection.Find(filter, options);

}

/// <summary>

/// MongoDB C# Driver的Find方法,返回IFindFluent。采用类型T的完全限定名作为collection name

/// </summary>

public IFindFluent<T, T> Find<T>(FilterDefinition<T> filter, FindOptions options = null)

{

 return Find(typeof(T).FullName, filter, options);

}
/// <summary>

/// 取符合条件的数据 sort中多个排序条件逗号分隔,默认asc

/// </summary>

public List<T> Get<T>(Expression<Func<T, bool>> condition, int skip, int limit, string sort)

{

 return Get(new List<Expression<Func<T, bool>>> { condition }, skip, limit, sort);

}

public List<T> Get<T>(Expression<Func<T, bool>> condition)

{
 return Get(condition, 0, 0, null);

}

/// <summary>

/// 取符合条件的数据 sort中多个排序条件逗号分隔,默认asc

/// </summary>

public List<T> Get<T>(List<Expression<Func<T, bool>>> conditions, int skip, int limit, string sort)

{

 if (conditions == null || conditions.Count == 0)

 {

  conditions = new List<Expression<Func<T, bool>>> { x => true };

 }

 var builder = Builders<T>.Filter;

 var filter = builder.And(conditions.Select(x => builder.Where(x)));

 var ret = new List<T>();

 try

 {

  List<SortDefinition<T>> sortDefList = new List<SortDefinition<T>>();

  if (sort != null)

  {

   var sortList = sort.Split(&#39;,&#39;);

   for (var i = 0; i < sortList.Length; i++)

   {
    var sl = Regex.Replace(sortList[i].Trim(), @"\s+", " ").Split(&#39; &#39;);

    if (sl.Length == 1 || (sl.Length >= 2 && sl[1].ToLower() == "asc"))

    {

     sortDefList.Add(Builders<T>.Sort.Ascending(sl[0]));

    }

    else if (sl.Length >= 2 && sl[1].ToLower() == "desc")

    {

     sortDefList.Add(Builders<T>.Sort.Descending(sl[0]));
    }

   }
  }

  var sortDef = Builders<T>.Sort.Combine(sortDefList);

  ret = Find(filter).Sort(sortDef).Skip(skip).Limit(limit).ToListAsync().Result;

 }

 catch (Exception e)

 {

  //异常处理

 }

 return ret;

}

public List<T> Get<T>(List<Expression<Func<T, bool>>> conditions)

{

 return Get(conditions, 0, 0, null);

}

Der Beispielcode implementiert nur die Einfüge- und Abfragefunktionen. und der vollständige Code wird später hochgeladen

Zusammenfassung

Dieser Artikel erfasst nur die grundlegende Verwendung von MongoDB Die Replikatebene, die automatische Master-Slave-Sicherung und andere Mechanismen und Implementierungsmethoden werden später vorgestellt.

[Verwandte Empfehlungen]

1. ASP.NET kostenloses Video-Tutorial

2. Erste Schritte mit MONGODB mit Python

3. So verwenden Sie die PyMongo-Bibliothek, um die MongoDB-Datenbank mit Python zu betreiben

Das obige ist der detaillierte Inhalt vonTeilen Sie detaillierte Beispiele für die Verwendung von MongoDB in .Net. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn