Detaillierte Analyse von GUID-Anzeigeproblemen in Mongodb

Detaillierte Analyse von GUID-Anzeigeproblemen in Mongodb

Finden Sie das Problem

Ich habe kürzlich den Speicher eines Programms nach Mongodb migriert und dabei ein Phänomen entdeckt: Nachdem der Guid-Typ geschrieben wurde, unterscheiden sich die im Programm gelesenen Daten von den vom Client-Tool angezeigten Daten. Ein einfaches Beispiel dafür ist wie folgt:

 var doc = neu {_id = 1, Wert = Guid.Parse("{B63932BB-9688-432B-B3A0-C4AE3FD2696A}") };
 Sammlung.InsertOne(doc.ToBsonDocument());

Nachdem wir in die Datenbank geschrieben haben, zeigen wir sie vom Client-Tool aus an:

Durch einen Vergleich kann festgestellt werden, dass der angezeigte Wert von der geschriebenen Form abweicht, der abgelesene Wert jedoch korrekt ist. Die Antwort auf diese Frage finden Sie in der offiziellen Dokumentationsspezifikation:

Offizielle Dokumentation: http://bsonspec.org/spec.html

Mongodb speichert UUID als Binärtyp und verwendet einen Subtyp, um seinen Typ als UUID zu kennzeichnen. In den für C#, Java und Python bereitgestellten Treibern wird der Subtyp standardmäßig auf 3 (Legacy UUID) abgebildet, was auch im Clienttool angezeigt wird:

Tatsächlich unterstützen die meisten Client-Tools auch die Anzeige der Legacy-UUID so, wie wir sie geschrieben haben.

Problemumgehung

Obwohl dies die Funktionalität des Programms nicht beeinträchtigt, beeinträchtigt es häufig unser Debugging des Programms, da die Zeichenfolge, die wir auf den ersten Blick sehen, nicht in dem Format vorliegt, in dem sie geschrieben wurde. Eine bessere Lösung ist, standardmäßig im Standard-UUID-Format zu speichern. Sie müssen nur eine globale Konfiguration festlegen:

 BsonDefaults.GuidRepresentation = GuidRepresentation.Standard;

Das ist viel bequemer:

Referenzartikel:

MongoDB Best Practices für UUID-Daten

Zusammenfassen

Oben finden Sie ausführliche Informationen zum Anzeigeproblem von GUID in Mongodb. Weitere Informationen zum Anzeigeproblem von GUID in Mongodb finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

<<:  Beispiele für die korrekte Verwendung von Karten in WeChat-Miniprogrammen

>>:  Zusammenfassung von 9 hervorragenden Codevergleichstools, die unter Linux empfohlen werden

Artikel empfehlen

Analyse der Anweisungsausführungsreihenfolge von SQL und MySQL

Ich bin heute auf ein Problem gestoßen: Kann ich ...

Detaillierte Erläuterung der Persistenz des Vue-Seitenstatus

Inhaltsverzeichnis Code: Auffüllen: Zusammenfasse...

So installieren und konfigurieren Sie Redis in CentOS7

Einführung Es ist nicht nötig, Redis im Detail vo...

Grundlagen der HTML-Bearbeitung (ein Muss für Anfänger)

Öffnen Sie DREAMWEAVER und erstellen Sie ein neue...

Ideen und Codes zur Implementierung der Vuex-Datenpersistenz

Was ist Vuex vuex: ist ein speziell für vue.js en...

Ursachen und Lösungen für die Front-End-Ausnahme 502 Bad Gateway

Inhaltsverzeichnis 502 Bad Gateway Fehlerbildung ...

Implementierung einer Suchfeldfunktion mit Suchsymbol basierend auf HTML-CSS

Vorwort Ich möchte Ihnen zeigen, wie Sie ein Such...

Beispielcode zur Verwendung der Elementkalenderkomponente in Vue

Schauen Sie sich zunächst das Wirkungsdiagramm an...

Tutorial zur Verwendung von Webpack in JavaScript

Inhaltsverzeichnis 0. Was ist Webpack 1. Einsatz ...

Beispielcode zur Implementierung des Verlaufs in Vuex

Ich habe vor Kurzem eine visuelle Operationsplatt...

So implementieren Sie das Abfangen von URIs im Nginx-Standort

veranschaulichen: Stamm und Alias ​​im Standort D...

Detaillierter Installationsprozess der MySQL 8.0 Windows-ZIP-Paketversion

Der Installationsprozess von MySQL 8.0 Windows Zi...