amongoc Features

amongoc Features#

amongoc is the first official asynchronous MongoDB C driver library, and targets compatibility with the driver library APIs that are common across other language implementations.

Because the library needs to be built from the ground-up to support asynchronous control flow, very little of the existing C driver implementation can be used directly, meaning that much of the feature set needs to be reimplemented. This page documents the status of the common driver library APIs within amongoc. Since the library is a proof-of-concept, many features have no target release date, but may be added in some future production-ready version.

Legend

  • ✅ - Feature is implemented and supported

  • ✏ - Feature is partially implemented

  • ❌ - Feature is not implemented in this proof-of-concept

  • 🚫 - Feature is not planned

Feature Status

  • Connection URIs

    • Basic URI parsing — Most URI options are recognized, but several are unimplemented

    • Multi-host URIs — Requires a non-standard URI parser

    • Programmatic connection parameters — Only connection URI strings are supported.

  • Connectivity

    • Hostname resolution

    • Transport encryption (TLS) — See also: the TLS point below

    • Connection pooling

      • Basic connection pooling

      • Pool options: minPoolSize, maxPoolSize, maxIdleTimeMS, maxConnecting

    • SRV discovery

    • Compression

    • Authentication

    • Automatic server selection

    • Server discovery and monitoring

    • Load balancing

    • 🚫 Legacy protocol support — e.g. OP_QUERY

  • TLS

    • TLS Connectivity

    • Client certificates

    • Custom CA certificates

    • Respects system CAs

    • Disable CRLs

    • OCSP

  • Data management

    • Basic CRUD APIs

    • Collection management

    • Index management

    • Bulk write APIs

    • Data encryption

  • Retryable operations

    • Retryable reads

    • Retryable writes

    • Client sessions

    • Transaction support

  • GridFS

  • Extended JSON parsing

  • Client-side monitoring

    • Command event monitoring

    • SDAM events (SDAM is not yet supported)