====== 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 ===== * ''[[lyx_-_programmiersprache:units:net:socket|std.net.socket]]'' * ''[[lyx_-_programmiersprache:units:net:dns|std.net.dns]]'' ---- ===== 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 | ''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. ---- ===== 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.