Example
Type Parameters
| Type Parameter | Description |
|---|---|
TSchema extends ModelSchema | The document schema type |
TMethods extends Record<string, (this, …args) => any> | Custom methods that will be added to documents |
Constructors
Constructor
new Store<Defined in: src/data/store.ts:102 Creates a new Store instanceTSchema,TMethods>(name,options):Store<TSchema,TMethods>
Parameters
| Parameter | Type | Description |
|---|---|---|
name | string | The collection name in MongoDB |
options | { indexes: IndexDescription[]; methods?: TMethods; schema: TSchema; searchIndexes?: SearchIndexDescription[]; } | Store configuration |
options.indexes | IndexDescription[] | MongoDB indexes to create |
options.methods? | TMethods | Custom methods to add to documents |
options.schema | TSchema | Document schema using Modelence schema types |
options.searchIndexes? | SearchIndexDescription[] | MongoDB Atlas Search |
Returns
Store<TSchema, TMethods>
Properties
| Property | Modifier | Type | Defined in |
|---|---|---|---|
Doc | readonly | EnhancedOmit<InferDocumentType<TSchema>, "_id"> & object & TMethods | src/data/store.ts:86 |
Methods
aggregate()
aggregate(Defined in: src/data/store.ts:505 Aggregates documents using MongoDB’s aggregation frameworkpipeline,options?):AggregationCursor<Document>
Parameters
| Parameter | Type | Description |
|---|---|---|
pipeline | Document[] | The aggregation pipeline |
options? | AggregateOptions | Optional options |
Returns
AggregationCursor<Document>
The aggregation cursor
bulkWrite()
bulkWrite(Defined in: src/data/store.ts:515 Performs a bulk write operation on the collectionoperations):Promise<BulkWriteResult>
Parameters
| Parameter | Type | Description |
|---|---|---|
operations | AnyBulkWriteOperation<InferDocumentType<TSchema>>[] | The operations to perform |
Returns
Promise<BulkWriteResult>
The result of the bulk write operation
countDocuments()
countDocuments(Defined in: src/data/store.ts:376 Counts the number of documents that match a queryquery):Promise<number>
Parameters
| Parameter | Type | Description |
|---|---|---|
query | Filter<InferDocumentType<TSchema>> | The query to filter documents |
Returns
Promise<number>
The number of documents that match the query
deleteMany()
deleteMany(Defined in: src/data/store.ts:494 Deletes multiple documentsselector):Promise<DeleteResult>
Parameters
| Parameter | Type | Description |
|---|---|---|
selector | Filter<InferDocumentType<TSchema>> | The selector to find the documents to delete |
Returns
Promise<DeleteResult>
The result of the delete operation
deleteOne()
deleteOne(Defined in: src/data/store.ts:484 Deletes a single documentselector):Promise<DeleteResult>
Parameters
| Parameter | Type | Description |
|---|---|---|
selector | Filter<InferDocumentType<TSchema>> | The selector to find the document to delete |
Returns
Promise<DeleteResult>
The result of the delete operation
extend()
extend<Defined in: src/data/store.ts:169 Extends the store with additional schema fields, indexes, methods, and search indexes. Returns a new Store instance with the extended schema and updated types. Methods from the original store are preserved with updated type signatures.TExtendedSchema,TExtendedMethods>(config):Store<TSchema&TExtendedSchema,PreserveMethodsForExtendedSchema<TMethods,TSchema&TExtendedSchema> &TExtendedMethods>
Example
Type Parameters
| Type Parameter | Default type |
|---|---|
TExtendedSchema extends ModelSchema | - |
TExtendedMethods extends Record<string, (this, …args) => any> | Record<string, never> |
Parameters
| Parameter | Type | Description |
|---|---|---|
config | { indexes?: IndexDescription[]; methods?: TExtendedMethods; schema?: TExtendedSchema; searchIndexes?: SearchIndexDescription[]; } | Additional schema fields, indexes, methods, and search indexes to add |
config.indexes? | IndexDescription[] | - |
config.methods? | TExtendedMethods | - |
config.schema? | TExtendedSchema | - |
config.searchIndexes? | SearchIndexDescription[] | - |
Returns
Store<TSchema & TExtendedSchema, PreserveMethodsForExtendedSchema<TMethods, TSchema & TExtendedSchema> & TExtendedMethods>
A new Store instance with the extended schema
fetch()
fetch(Defined in: src/data/store.ts:387 Fetches multiple documents, equivalent to Node.js MongoDB driver’squery,options?):Promise<EnhancedOmit<InferDocumentType<TSchema>,"_id"> &object&TMethods[]>
find and toArray methods combined.
Parameters
| Parameter | Type | Description |
|---|---|---|
query | Filter<InferDocumentType<TSchema>> | The query to filter documents |
options? | { limit?: number; skip?: number; sort?: Document; } | Options |
options.limit? | number | - |
options.skip? | number | - |
options.sort? | Document | - |
Returns
Promise<EnhancedOmit<InferDocumentType<TSchema>, "_id"> & object & TMethods[]>
The documents
findById()
findById(Defined in: src/data/store.ts:348 Fetches a single document by its IDid):Promise<null|EnhancedOmit<InferDocumentType<TSchema>,"_id"> &object&TMethods>
Parameters
| Parameter | Type | Description |
|---|---|---|
id | string | ObjectId | The ID of the document to find |
Returns
Promise<null | EnhancedOmit<InferDocumentType<TSchema>, "_id"> & object & TMethods>
The document, or null if not found
findOne()
findOne(Defined in: src/data/store.ts:308query,options?):Promise<null|EnhancedOmit<InferDocumentType<TSchema>,"_id"> &object&TMethods>
Parameters
| Parameter | Type |
|---|---|
query | Filter<InferDocumentType<TSchema>> |
options? | FindOptions<Document> |
Returns
Promise<null | EnhancedOmit<InferDocumentType<TSchema>, "_id"> & object & TMethods>
getDatabase()
getDatabase(): Db
Defined in: src/data/store.ts:524
Returns the raw MongoDB database instance for advanced operations
Returns
Db
The MongoDB database instance
Throws
Error if the store is not provisionedgetName()
getName(): string
Defined in: src/data/store.ts:122
Returns
string
insertMany()
insertMany(Defined in: src/data/store.ts:413 Inserts multiple documentsdocuments):Promise<InsertManyResult<Document>>
Parameters
| Parameter | Type | Description |
|---|---|---|
documents | OptionalUnlessRequiredId<InferDocumentType<TSchema>>[] | The documents to insert |
Returns
Promise<InsertManyResult<Document>>
The result of the insert operation
insertOne()
insertOne(Defined in: src/data/store.ts:401 Inserts a single documentdocument):Promise<InsertOneResult<Document>>
Parameters
| Parameter | Type | Description |
|---|---|---|
document | OptionalUnlessRequiredId<InferDocumentType<TSchema>> | The document to insert |
Returns
Promise<InsertOneResult<Document>>
The result of the insert operation
rawCollection()
rawCollection():Defined in: src/data/store.ts:533 Returns the raw MongoDB collection instance for advanced operationsCollection<InferDocumentType<TSchema>>
Returns
Collection<InferDocumentType<TSchema>>
The MongoDB collection instance
Throws
Error if the store is not provisionedrenameFrom()
renameFrom(Defined in: src/data/store.ts:542 Renames an existing collection to this store’s name, used for migrationsoldName,options?):Promise<void>
Parameters
| Parameter | Type | Description |
|---|---|---|
oldName | string | The previous name of the collection |
options? | { session?: ClientSession; } | - |
options.session? | ClientSession | - |
Returns
Promise<void>
Throws
Error if the old collection doesn’t exist or if this store’s collection already existsrequireById()
requireById(Defined in: src/data/store.ts:360 Fetches a single document by its ID, or throws an error if not foundid,errorHandler?):Promise<EnhancedOmit<InferDocumentType<TSchema>,"_id"> &object&TMethods>
Parameters
| Parameter | Type | Description |
|---|---|---|
id | string | ObjectId | The ID of the document to find |
errorHandler? | () => Error | Optional error handler to return a custom error if the document is not found |
Returns
Promise<EnhancedOmit<InferDocumentType<TSchema>, "_id"> & object & TMethods>
The document
requireOne()
requireOne(Defined in: src/data/store.ts:313query,options?,errorHandler?):Promise<EnhancedOmit<InferDocumentType<TSchema>,"_id"> &object&TMethods>
Parameters
| Parameter | Type |
|---|---|
query | Filter<InferDocumentType<TSchema>> |
options? | FindOptions<Document> |
errorHandler? | () => Error |
Returns
Promise<EnhancedOmit<InferDocumentType<TSchema>, "_id"> & object & TMethods>
updateMany()
updateMany(Defined in: src/data/store.ts:456 Updates multiple documentsselector,update,options?):Promise<UpdateResult<Document>>
Parameters
| Parameter | Type | Description |
|---|---|---|
selector | Filter<InferDocumentType<TSchema>> | The selector to find the documents to update |
update | UpdateFilter<InferDocumentType<TSchema>> | The MongoDB modifier to apply to the documents |
options? | { session?: ClientSession; } | - |
options.session? | ClientSession | - |
Returns
Promise<UpdateResult<Document>>
The result of the update operation
updateOne()
updateOne(Defined in: src/data/store.ts:426 Updates a single documentselector,update):Promise<UpdateResult<Document>>
Parameters
| Parameter | Type | Description |
|---|---|---|
selector | string | ObjectId | Filter<InferDocumentType<TSchema>> | The selector to find the document to update |
update | UpdateFilter<InferDocumentType<TSchema>> | The update to apply to the document |
Returns
Promise<UpdateResult<Document>>
The result of the update operation
upsertMany()
upsertMany(Defined in: src/data/store.ts:471 Updates multiple documents, or inserts them if they don’t existselector,update):Promise<UpdateResult<Document>>
Parameters
| Parameter | Type | Description |
|---|---|---|
selector | Filter<InferDocumentType<TSchema>> | The selector to find the documents to update |
update | UpdateFilter<InferDocumentType<TSchema>> | The MongoDB modifier to apply to the documents |
Returns
Promise<UpdateResult<Document>>
The result of the update operation
upsertOne()
upsertOne(Defined in: src/data/store.ts:440 Updates a single document, or inserts it if it doesn’t existselector,update):Promise<UpdateResult<Document>>
Parameters
| Parameter | Type | Description |
|---|---|---|
selector | string | ObjectId | Filter<InferDocumentType<TSchema>> | The selector to find the document to update |
update | UpdateFilter<InferDocumentType<TSchema>> | The MongoDB modifier to apply to the document |
Returns
Promise<UpdateResult<Document>>
The result of the update operation
vectorSearch()
vectorSearch(Defined in: src/data/store.ts:587 Performs a vector similarity search using MongoDB Atlas Vector Searchparams):Promise<AggregationCursor<Document>>
Example
Parameters
| Parameter | Type | Description |
|---|---|---|
params | { embedding: number[]; field: string; indexName?: string; limit?: number; numCandidates?: number; projection?: Document; } | Vector search parameters |
params.embedding | number[] | The query vector to search for |
params.field | string | The field name containing the vector embeddings |
params.indexName? | string | Name of index (default: field + VectorSearch) |
params.limit? | number | Maximum number of results to return (default: 10) |
params.numCandidates? | number | Number of nearest neighbors to consider (default: 100) |
params.projection? | Document | Additional fields to include in the results |
Returns
Promise<AggregationCursor<Document>>
An aggregation cursor with search results and scores
vectorIndex()
Defined in: src/data/store.ts:650 Creates a MongoDB Atlas Vector Search index definitionstaticvectorIndex(params):object
Example
Parameters
| Parameter | Type | Description |
|---|---|---|
params | { dimensions: number; field: string; indexName?: string; similarity?: "cosine" | "euclidean" | "dotProduct"; } | Vector index parameters |
params.dimensions | number | The number of dimensions in the vector embeddings |
params.field | string | The field name to create the vector index on |
params.indexName? | string | Name of index (default: field + VectorSearch) |
params.similarity? | "cosine" | "euclidean" | "dotProduct" | The similarity metric to use (default: ‘cosine’) |
Returns
object
A search index description object
| Name | Type | Default value | Defined in |
|---|---|---|---|
definition | object | - | src/data/store.ts:664 |
definition.fields | object[] | - | src/data/store.ts:665 |
name | string | - | src/data/store.ts:663 |
type | string | 'vectorSearch' | src/data/store.ts:662 |