@mastra/mongodb 1.13.0 → 1.14.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,6 +15,19 @@ export interface MongoDBQueryVectorParams extends QueryVectorParams<MongoDBVecto
15
15
  */
16
16
  numCandidates?: number;
17
17
  }
18
+ export interface MongoDBCreateIndexParams extends CreateIndexParams {
19
+ /**
20
+ * Metadata field names to declare as filter fields in the Atlas vectorSearch
21
+ * index (registered as `metadata.<field>`). Queries whose metadata filter
22
+ * only touches declared fields — using operators `$vectorSearch.filter`
23
+ * supports — are passed directly to `$vectorSearch` instead of pre-filtering
24
+ * candidate `_id`s, avoiding the 16 MB BSON limit on large result sets.
25
+ * Filters that reference an undeclared field, or use an unsupported
26
+ * operator, automatically fall back to the pre-filter.
27
+ * @see https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-type/
28
+ */
29
+ filterFields?: string[];
30
+ }
18
31
  export interface MongoDBVectorConfig {
19
32
  /** Unique identifier for this vector store instance */
20
33
  id: string;
@@ -43,6 +56,20 @@ export declare class MongoDBVector extends MastraVector<MongoDBVectorFilter> {
43
56
  private readonly embeddingFieldName;
44
57
  private readonly metadataFieldName;
45
58
  private readonly documentFieldName;
59
+ /**
60
+ * Per-index cache of the filter paths declared in the Atlas vectorSearch index
61
+ * (e.g. `document`, `metadata.category`). Populated when an index is created in
62
+ * this process and lazily hydrated from the live index definition otherwise.
63
+ * `_id` is excluded because it is materialised separately by the fallback path.
64
+ */
65
+ private declaredFilterPaths;
66
+ /**
67
+ * MongoDB query operators supported inside `$vectorSearch.filter`. Intentionally
68
+ * conservative: filters using any operator outside this set fall back to the
69
+ * `$match` pre-filter, which supports the full query language. Widening this set
70
+ * is safe only for operators Atlas Vector Search actually accepts in `filter`.
71
+ */
72
+ private static readonly PUSHDOWN_OPERATORS;
46
73
  private mongoMetricMap;
47
74
  constructor({ id, uri, dbName, options, embeddingFieldPath }: MongoDBVectorConfig);
48
75
  connect(): Promise<void>;
@@ -58,7 +85,13 @@ export declare class MongoDBVector extends MastraVector<MongoDBVectorFilter> {
58
85
  * queryable. Skipping that step on a real Atlas cluster may cause
59
86
  * "index not found" or "index not ready" errors on subsequent operations.
60
87
  */
61
- createIndex({ indexName, dimension, metric }: CreateIndexParams): Promise<void>;
88
+ createIndex({ indexName, dimension, metric, filterFields, }: MongoDBCreateIndexParams): Promise<void>;
89
+ /**
90
+ * Creates an Atlas Search index, treating IndexAlreadyExists as a no-op so
91
+ * `createIndex` stays idempotent per index. Returns true when the index was
92
+ * actually created by this call.
93
+ */
94
+ private createSearchIndexIgnoringExisting;
62
95
  /**
63
96
  * Waits for the index to be ready.
64
97
  *
@@ -151,6 +184,27 @@ export declare class MongoDBVector extends MastraVector<MongoDBVectorFilter> {
151
184
  */
152
185
  private getCollection;
153
186
  private validateVectorDimensions;
187
+ /**
188
+ * Maps user-facing `filterFields` (bare metadata field names) to the fully
189
+ * qualified filter paths stored in the index, e.g. `category` → `metadata.category`.
190
+ * Blank entries are dropped and duplicates collapsed. A name already carrying the
191
+ * `metadata.` prefix is left untouched so callers can pass either form.
192
+ */
193
+ private buildDeclaredMetadataPaths;
194
+ /**
195
+ * Returns the set of filter paths declared in the vectorSearch index (e.g.
196
+ * `document`, `metadata.category`), excluding `_id`. Reads the live index
197
+ * definition once per index and caches the result. Used to decide whether a
198
+ * metadata filter can be pushed down into `$vectorSearch.filter`.
199
+ */
200
+ private getDeclaredFilterPaths;
201
+ /**
202
+ * True when `filter` can be passed directly to `$vectorSearch.filter`: every
203
+ * field path it references is a declared filter field and every operator is in
204
+ * {@link MongoDBVector.PUSHDOWN_OPERATORS}. Conservative by design — anything it
205
+ * can't prove safe returns false so the caller uses the `$match` pre-filter.
206
+ */
207
+ private canPushDownFilter;
154
208
  private transformFilter;
155
209
  /**
156
210
  * Transform metadata field filters to use MongoDB dot notation.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vector/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vector/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/mongodb",
3
- "version": "1.13.0",
3
+ "version": "1.14.0-alpha.0",
4
4
  "description": "MongoDB provider for Mastra - includes vector store capabilities",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -27,15 +27,15 @@
27
27
  "@types/node": "22.20.1",
28
28
  "@vitest/coverage-v8": "4.1.10",
29
29
  "@vitest/ui": "4.1.10",
30
- "eslint": "^10.4.1",
30
+ "eslint": "^10.7.0",
31
31
  "tsup": "^8.5.1",
32
32
  "tsx": "^4.22.4",
33
33
  "typescript": "^6.0.3",
34
34
  "vitest": "4.1.10",
35
35
  "@internal/lint": "0.0.114",
36
+ "@internal/storage-test-utils": "0.0.110",
36
37
  "@internal/types-builder": "0.0.89",
37
- "@mastra/core": "1.51.0",
38
- "@internal/storage-test-utils": "0.0.110"
38
+ "@mastra/core": "1.52.0-alpha.8"
39
39
  },
40
40
  "peerDependencies": {
41
41
  "@mastra/core": ">=1.51.0-0 <2.0.0-0"