MongoDB Storage
The MongoDB storage implementation provides a scalable storage solution using MongoDB databases with support for both document storage and vector operations.
Installation
npm install @mastra/mongodb@latest
Usage
Ensure you have a MongoDB Atlas Local (via Docker) or MongoDB Atlas Cloud instance with Atlas Search enabled. MongoDB 7.0+ is recommended.
import { MongoDBStore } from "@mastra/mongodb";
const storage = new MongoDBStore({
url: process.env.MONGODB_URL,
dbName: process.env.MONGODB_DATABASE,
});
Parameters
url:
string
MongoDB connection string (e.g., mongodb+srv://user:password@cluster.mongodb.net)
dbName:
string
The name of the database you want the storage to use.
options?:
MongoClientOptions
MongoDB client options for advanced configuration (SSL, connection pooling, etc.). See advanced configuration [here](https://www.mongodb.com/docs/drivers/node/current/connect/connection-options/).
Constructor Examples
You can instantiate MongoDBStore
in the following ways:
import { MongoDBStore } from "@mastra/mongodb";
// Basic connection without custom options
const store1 = new MongoDBStore({
url: "mongodb+srv://user:password@cluster.mongodb.net",
dbName: "mastra_storage",
});
// Using connection string with options
const store2 = new MongoDBStore({
url: "mongodb+srv://user:password@cluster.mongodb.net",
dbName: "mastra_storage",
options: {
retryWrites: true,
maxPoolSize: 10,
serverSelectionTimeoutMS: 5000,
socketTimeoutMS: 45000,
},
});
Additional Notes
Collection Management
The storage implementation handles collection creation and management automatically. It creates the following collections:
mastra_workflow_snapshot
: Stores workflow state and execution datamastra_evals
: Stores evaluation results and metadatamastra_threads
: Stores conversation threadsmastra_messages
: Stores individual messagesmastra_traces
: Stores telemetry and tracing datamastra_scorers
: Stores scoring and evaluation datamastra_resources
: Stores resource working memory data
Vector Search Capabilities
MongoDB storage includes built-in vector search capabilities for AI applications:
Vector Index Creation
import { MongoDBVector } from "@mastra/mongodb";
const vectorStore = new MongoDBVector({
url: process.env.MONGODB_URL,
dbName: process.env.MONGODB_DATABASE,
});
// Create a vector index for embeddings
await vectorStore.createIndex({
indexName: "document_embeddings",
dimension: 1536,
});
Vector Operations
// Store vectors with metadata
await vectorStore.upsert({
indexName: "document_embeddings",
vectors: [
{
id: "doc-1",
values: [0.1, 0.2, 0.3, ...], // 1536-dimensional vector
metadata: {
title: "Document Title",
category: "technical",
source: "api-docs",
},
},
],
});
// Similarity search
const results = await vectorStore.query({
indexName: "document_embeddings",
vector: queryEmbedding,
topK: 5,
filter: {
category: "technical",
},
});