Skip to main content

Driver Guide

MongoDB Drivers

Thermocline speaks the MongoDB wire protocol. Connect with any official MongoDB driver - no special SDK needed:

// Node.js
const { MongoClient } = require('mongodb');
const client = new MongoClient('mongodb://localhost:27017');
await client.connect();
const db = client.db('myapp');
const users = await db.collection('users').find({ status: 'active' }).toArray();
# Python
from pymongo import MongoClient
client = MongoClient('mongodb://localhost:27017')
db = client['myapp']
users = list(db.users.find({'status': 'active'}))
// Go
client, _ := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
coll := client.Database("myapp").Collection("users")
cursor, _ := coll.Find(ctx, bson.M{"status": "active"})

All official MongoDB drivers work: Node.js, Python, Java, Go, Rust, C#, C/C++, Ruby, PHP.

Driver Compatibility

DriverStatus
Node.js / MongooseSupported
Python / PyMongo / MotorSupported
JavaSupported
GoSupported
RustSupported
C# / .NETSupported
C / C++Supported
RubySupported
PHPSupported

Vector Search via Driver

const results = await db.collection('documents').aggregate([
{ $vectorSearch: {
queryVector: [0.1, 0.2, 0.3, 0.4],
path: 'embedding',
numCandidates: 100,
limit: 10,
index: 'vector_idx'
}}
]).toArray();

Time Travel via Driver

const historicalData = await db.collection('orders').find(
{ status: 'shipped' },
{ readConcern: { level: 'snapshot', atClusterTime: Timestamp(1700000000, 0) } }
).toArray();

Source of Truth

  • MongoDB compatibility matrix: docs/COMPATIBILITY.md
  • Wire protocol: services/gateway/src/proxy/