MongoDB Storage
The MongoDB storage implementation provides a scalable storage solution using MongoDB databases with support for both document storage and vector operations.
InstallationDirect link to Installation
npm install @mastra/mongodb@latest
UsageDirect link to 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,
});
ParametersDirect link to Parameters
url:
dbName:
options?:
Constructor ExamplesDirect link to 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 NotesDirect link to Additional Notes
Collection ManagementDirect link to 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
InitializationDirect link to Initialization
When you pass storage to the Mastra class, init() is called automatically before any storage operation:
import { Mastra } from "@mastra/core";
import { MongoDBStore } from "@mastra/mongodb";
const storage = new MongoDBStore({
url: process.env.MONGODB_URL,
dbName: process.env.MONGODB_DATABASE,
});
const mastra = new Mastra({
storage, // init() is called automatically
});
If you're using storage directly without Mastra, you must call init() explicitly to create the collections:
import { MongoDBStore } from "@mastra/mongodb";
const storage = new MongoDBStore({
url: process.env.MONGODB_URL,
dbName: process.env.MONGODB_DATABASE,
});
// Required when using storage directly
await storage.init();
// Now you can use the storage
await storage.getThread({ threadId: "..." });
If init() is not called, collections won't be created and storage operations will fail silently or throw errors.
Vector Search CapabilitiesDirect link to Vector Search Capabilities
MongoDB storage includes built-in vector search capabilities for AI applications:
Vector Index CreationDirect link to 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 OperationsDirect link to 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",
},
});