@mastra/mongodb 1.13.0 → 1.14.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.
- package/CHANGELOG.md +50 -6
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/docs-memory-working-memory.md +1 -1
- package/dist/docs/references/reference-vectors-mongodb.md +2 -0
- package/dist/index.cjs +153 -34
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +153 -34
- package/dist/index.js.map +1 -1
- package/dist/vector/index.d.ts +55 -1
- package/dist/vector/index.d.ts.map +1 -1
- package/package.json +7 -7
package/dist/vector/index.d.ts
CHANGED
|
@@ -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 }:
|
|
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":"AAGA,OAAO,EAAE,YAAY,EAA6C,MAAM,qBAAqB,CAAC;AAC9F,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,kBAAkB,EAA4B,MAAM,SAAS,CAAC;AAI5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGpD,MAAM,WAAW,yBAA0B,SAAQ,kBAAkB;IACnE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,wBAAyB,SAAQ,iBAAiB,CAAC,mBAAmB,CAAC;IACtF,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,EAAE,EAAE,MAAM,CAAC;IACX,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,0CAA0C;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAWD,qBAAa,aAAc,SAAQ,YAAY,CAAC,mBAAmB,CAAC;IAClE,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,EAAE,CAAK;IACf,OAAO,CAAC,WAAW,CAA2C;IAC9D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAc;IAChD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAc;IAChD,OAAO,CAAC,cAAc,CAIpB;gBAEU,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,mBAAmB;IAqB3E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAexB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC;;;;;;;;;;OAUG;IACG,WAAW,CAAC,
|
|
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.
|
|
3
|
+
"version": "1.14.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.
|
|
30
|
+
"eslint": "^10.7.0",
|
|
31
31
|
"tsup": "^8.5.1",
|
|
32
|
-
"tsx": "^4.
|
|
32
|
+
"tsx": "^4.23.1",
|
|
33
33
|
"typescript": "^6.0.3",
|
|
34
34
|
"vitest": "4.1.10",
|
|
35
|
-
"@internal/lint": "0.0.
|
|
36
|
-
"@internal/types-builder": "0.0.
|
|
37
|
-
"@mastra/core": "1.
|
|
38
|
-
"@internal/storage-test-utils": "0.0.
|
|
35
|
+
"@internal/lint": "0.0.115",
|
|
36
|
+
"@internal/types-builder": "0.0.90",
|
|
37
|
+
"@mastra/core": "1.52.0",
|
|
38
|
+
"@internal/storage-test-utils": "0.0.111"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"@mastra/core": ">=1.51.0-0 <2.0.0-0"
|