std.net.mongo

MongoDB ist eine dokumentenorientierte NoSQL-Datenbank, die Daten als BSON-Dokumente (Binary JSON) speichert. Die Unit implementiert das MongoDB Wire Protocol direkt über TCP — ohne externe Treiberbibliothek. Unterstützt werden Verbindungsaufbau, Authentifizierung (PLAIN, SCRAM-SHA-1), Dokument-Erstellung im BSON-Format und alle relevanten Op-Codes (Query, Insert, Update, Delete, Msg).

Einsatzbereiche sind Anwendungen mit flexiblem, schemalosem Datenspeicher — typisch für Logging, Kataloge, Content-Management, Zeitreihendaten und Konfigurationsspeicher.


Imports

Konstanten

Name Typ Wert Sichtbarkeit
MONGO_PORT int64 27017 pub
BSON_DOUBLE int64 1 pub
BSON_STRING int64 2 pub
BSON_DOCUMENT int64 3 pub
BSON_ARRAY int64 4 pub
BSON_BINARY int64 5 pub
BSON_UNDEFINED int64 6 pub
BSON_OBJECTID int64 7 pub
BSON_BOOL int64 8 pub
BSON_NULL int64 9 pub
BSON_INT32 int64 16 pub
BSON_TIMESTAMP int64 17 pub
BSON_INT64 int64 18 pub
BSON_MINKEY int64 255 pub
BSON_MAXKEY int64 127 pub
MONGO_OP_REPLY int64 1 pub
MONGO_OP_MSG int64 1000 pub
MONGO_OP_UPDATE int64 2001 pub
MONGO_OP_INSERT int64 2002 pub
MONGO_OP_QUERY int64 2004 pub
MONGO_OP_GET_MORE int64 2005 pub
MONGO_OP_DELETE int64 2006 pub
MONGO_OP_KILL_CURSORS int64 2007 pub
MONGO_AUTH_PLAIN int64 0 pub
MONGO_AUTH_SCRAM_SHA1 int64 1 pub

Typen

MongoPool (struct)

Feld Typ
host int64
port int64
count int64
max int64

MongoConn (struct)

Feld Typ

Funktionen

Signatur Sichtbarkeit Beschreibung
MongoConnect(host: int64, port: int64): MongoConn pub Öffnet TCP-Verbindung zu MongoDB
MongoDisconnect(conn: MongoConn) pub Trennt MongoDB-Verbindung
MongoIsConnected(conn: MongoConn): bool pub Prüft ob Verbindung aktiv ist

MongoDoc (struct)

Feld Typ
Signatur Sichtbarkeit Beschreibung
MongoDocNew(): MongoDoc pub Erstellt leeres BSON-Dokument
MongoDocAddString(doc: MongoDoc, key: int64, value: int64): int64 pub Fügt String-Feld in BSON-Dokument ein
MongoSend(conn: MongoConn, data: int64, len: int64): int64 pub Sendet Wire-Protocol-Daten an MongoDB
MongoRead(conn: MongoConn, data: int64, len: int64): int64 pub Empfängt Wire-Protocol-Daten von MongoDB
MongoCollectionName(db: int64, coll: int64): int64 pub Erzeugt vollständigen Collection-Bezeichner

BSON-Dokumente vervollständigen

Signatur Beschreibung
MongoDocAddInt32(doc: MongoDoc, key: int64, value: int64): int64 32-Bit-Ganzzahl anhängen (BSON-Typ 0x10)
MongoDocAddBinary(doc: MongoDoc, key: int64, data: int64, datalen: int64): int64 Binärfeld anhängen (BSON-Typ 0x05, Untertyp 0x00)
MongoDocFinalize(doc: MongoDoc): int64 Dokument abschließen; schreibt die Längenangabe im Kopf und das abschließende Nullbyte, liefert die Gesamtlänge

<WRAP alert> MongoDocFinalize ist Pflicht, bevor ein Dokument verschickt wird. Erst dabei entstehen die BSON-Längenangabe am Anfang und der Abschluss am Ende — ohne den Aufruf ist das Dokument unvollständig und wird von der Gegenstelle abgelehnt. </WRAP>


Verschlüsselung und Anmeldung

Signatur Beschreibung
MongoConnectTLS(host: int64, port: int64, hostname: int64): MongoConn Verbindung über TLS; hostname dient der Zertifikatsprüfung
MongoAuth(conn: MongoConn, username: int64, password: int64, authdb: int64, authMechanism: int64): int64 Anmeldung, vorgesehen mit MONGO_AUTH_SCRAM_SHA256

authdb ist die Datenbank, in der der Benutzer angelegt ist — meist admin, nicht die Datenbank, mit der anschließend gearbeitet wird. Das ist die häufigste Ursache für eine abgelehnte Anmeldung bei sonst richtigen Zugangsdaten.