BSON (Binary JSON) ist eine binär codierte Serialisierung von JSON-ähnlichen Dokumenten, die in MongoDB-Datenbanken verwendet wird. Dieser Artikel bietet einen Überblick über BSON, das binäre Datenformat, das von MongoDB zum Speichern von Dokumenten verwendet wird.
Er erklärt, was BSON ist, wie es JSON-Funktionen erweitert und die wichtigsten Unterschiede zwischen BSON und JSON. Darüber hinaus wird erläutert, wie Apidog dies automatisch handhabt. Es zeigt auch Beispiele für grundlegende CRUD-Operationen und Datenbankbefehle mit Apidog zur Interaktion mit MongoDB.
Was ist Bson in MongoDB?
BSON (Binary JSON) ist das primäre Datenformat, das in MongoDB-Datenbanken verwendet wird. Einige wichtige Dinge, die man über BSON in MongoDB wissen sollte:
- BSON ist eine binäre Darstellung von JSON-Dokumenten. Es erweitert JSON um zusätzliche Datentypen wie Datumsangaben, Zeitstempel, binäre Daten usw.
- MongoDB speichert alle Daten intern als BSON. Wenn Sie ein Dokument in MongoDB einfügen, wird es zuerst in BSON konvertiert, bevor es auf die Festplatte geschrieben wird.
- BSON codiert Typ- und Längeninformationen, wodurch MongoDB Dokumente effizient scannen und durchlaufen kann, ohne jedes einzelne zu untersuchen und zu interpretieren. Dies verbessert die Leistung.
- BSON ist so konzipiert, dass es leichtgewichtig, traversierbar und effizient zu codieren/decodieren ist. Dies macht es gut geeignet als Datenspeicher- und Austauschformat für MongoDB.
- Die Standarddateierweiterung für BSON-Dateien ist .bson. Mongo-Tools wie Mongoexport können verwendet werden, um MongoDB-Daten zur Sicherung oder Migration nach BSON zu exportieren.
- BSON ist so konzipiert, dass es sehr gut traversierbar ist. MongoDB-Abfragen verwenden Indizes, um Ergebnisse schnell zu finden und abzurufen, ohne jedes Dokument zu scannen.
Struktur eines BSON-Dokuments
BSON (Binary JSON) ist eine binär codierte Serialisierung von JSON-ähnlichen Dokumenten, die in MongoDB-Datenbanken verwendet wird. Ein BSON-Dokument enthält geordnete Feld-Wert-Paare, ähnlich wie JSON-Objekte.
Die Felder können beliebige gültige UTF-8-Zeichenfolgen sein, während Werte einen von mehreren BSON-Datentypen wie Zeichenfolge, Ganzzahl, Double, binäre Daten, Array, Dokument, Boolesch, Datum, Null usw. sein können. Die Struktur eines BSON-Dokuments beginnt mit einer 4-Byte-Ganzzahl, die die Gesamtgröße des Dokuments angibt.
Als Nächstes folgt ein Feld-Wert-Paar, das das Feld "_id" enthält, das das Dokument eindeutig identifiziert. Der Dokumentinhalt folgt mit jedem Feld-Wert-Paar, das in einem bestimmten binären Format basierend auf dem Datentyp codiert ist.
Ein Beispiel, das die Struktur eines BSON-Dokuments zeigt:
// Sample BSON document
{
_id: ObjectId("507f1f77bcf86cd799439011"), // 12-byte unique ID
name: "John Doe", // String
age: 35, // Integer
address: { // Embedded document
street: "123 Main St",
city: "Anytown",
state: "CA"
},
hobbies: ["reading", "hiking","swimming"], // Array
graduated: true, // Boolean
birthday: ISODate("1980-05-15T00:00:00Z"), // Date
data: BinData(0, "SGVsbG8gV29ybGQ="), // Binary data
ts: Timestamp(1590583045633, 1) // Timestamp
}
Wichtige Dinge, die man beachten sollte:
_id
Feld identifiziert das Dokument eindeutig- Feld-Wert-Paare haben eine definierte Reihenfolge
- Unterstützt zusätzliche Datentypen wie ISODate, ObjectId usw.
- Kann Dokumente und Arrays einbetten
- Binäre Daten werden effizient gespeichert
Was ist der Unterschied zwischen JSON und BSON?
Hier sind die wichtigsten Unterschiede zwischen JSON und BSON:
- Encoding: JSON ist textbasiert und in UTF-8 codiert, während BSON binär codiert ist.
- Datentypen: JSON unterstützt begrenzte Datentypen wie Zeichenfolgen, Zahlen, Boolesche Werte, Arrays und Objekte. BSON unterstützt zusätzliche Typen wie Datumsangaben, binäre Daten, reguläre Ausdrücke usw.
- Efficiency: Die binäre BSON-Codierung ermöglicht eine effizientere Speicherung und Suche von Daten im Vergleich zu JSON. BSON-Dokumente haben ein Längenpräfix und enthalten keine Leerzeichen, sodass sie schneller geparst werden können.
- Ordering: Die Feld-Wert-Paare in BSON-Dokumenten sind geordnet, was eine effiziente Traversierung und Indizierung ermöglicht. JSON-Objekte haben keine Ordnungsgarantien.
- Flexibility: BSON bietet eine gewisse Flexibilität gegenüber JSON, z. B. die Möglichkeit, dass Feldnamen Sonderzeichen und Unicode enthalten.
- Usage: JSON ist ein allgemeines Format, das weit über das Web und Anwendungen hinweg verwendet wird. BSON wird speziell in MongoDB-Datenbanken als primäre Datenrepräsentation verwendet.
- Schema: JSON ist standardmäßig schemalos, während MongoDB die Durchsetzung von Schemata für BSON-Dokumente durch Validierungsregeln ermöglicht.
- Null values: JSON hat einen einzelnen Nullwert. BSON unterscheidet zwischen Null- und fehlenden Feldern.
Konvertierung von JSON und BSON in MongoDB mit Apidog
Apidog ist ein API-Toolkit, das die API-Entwicklung vereinfacht. Es bietet MongoDB als eine seiner integrierten Datenbankoptionen. Durch die Verwendung von MongoDB mit Apidog können Sie API-Mocks und -Tests in MongoDB als Backend speichern.
Die Mock-API-Antworten, die von Apidog bereitgestellt werden, können von Daten gesteuert werden, die in einer MongoDB-Datenbank gespeichert sind. Dies ermöglicht es Apidog, MongoDB als persistente Datenquelle für Mock-APIs zu nutzen. Als Nächstes werden wir die Beziehung von JSON und BSON mit Ihnen erklären.
MongoDB speichert Daten als BSON-Dokumente, die als eine Obermenge von JSON angesehen werden können. Bei der Arbeit mit der MongoDB-Datenbank mit Apidog wird JSON verwendet, um den Inhalt zu erstellen. Apidog ordnet jedes Feld automatisch dem entsprechenden BSON-Datentyp basierend auf dem tatsächlichen JSON-Inhalt zu.
Ein Sonderfall ist das Feld _id
. Gemäß den MongoDB-Konventionen muss jedes Dokument ein Feld _id
als Primärschlüssel haben, wobei ObjectId
der Standarddatentyp anstelle von string
ist.
Um mit Apidog ein Feld _id
vom Typ ObjectId
zu deklarieren, verwenden Sie das reguläre Zeichenfolgenformat. Wenn der Zeichenfolgeninhalt dem ObjectId
-Format entspricht, ordnet Apidog ihn automatisch dem BSON-Typ ObjectId
zu.
Zum Beispiel gibt es in MongoDb ein BSON-Dokument wie:
Copy code
{
_id: ObjectId('654e056de3662b1c09477cc3
'),
name: "Apidog"
}
Um dieses Dokument dann mit Apidog nach _id
abzufragen, wäre das JSON, das in die "Query Condition" eingefügt werden soll:
Copy code
{
"_id": "654e056de3662b1c09477cc3"
}
