AbimongoModel
@abimongo/core / AbimongoModel
Class: AbimongoModel<T>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:41
Represents a model for MongoDB operations with support for schema validation, middleware, and multi-tenancy.
Type Parameters
T
T extends Document
The type of the document in the collection.
Constructors
Constructor
new AbimongoModel<
T>(options):AbimongoModel<T>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:52
Parameters
options
Returns
AbimongoModel<T>
Properties
collectionName
collectionName:
string
Defined in: core/src/lib-core/AbimongoModelFactory.ts:48
Accessors
collection
Get Signature
get collection():
Collection<T>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:200
Gets the MongoDB collection associated with this model.
Returns
Collection<T>
The MongoDB collection.
schema
Get Signature
get schema():
AbimongoSchema<T>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:208
Gets the schema associated with this model.
Returns
The schema for the model.
Methods
aggregate()
aggregate<
U>(pipeline,options?,session?):Promise<U[]>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:679
Aggregates documents in the collection using a pipeline.
Type Parameters
U
U extends Document
Parameters
pipeline
object[]
The aggregation pipeline.
options?
AggregateOptions = {}
The aggregation options.
session?
ClientSession
The session for transactions.
Returns
Promise<U[]>
The aggregation result as an array.
Throws
If the aggregation fails or the session cannot be started
aggregateWithCache()
aggregateWithCache(
pipeline,cacheKey,cacheDuration?):Promise<T[]>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:796
Aggregates documents in the collection using a pipeline with caching.
Parameters
pipeline
object[]
The aggregation pipeline.
cacheKey
string
The cache key.
cacheDuration?
number = 300
The cache duration in seconds.
Returns
Promise<T[]>
The aggregation result as an array.
Throws
If the pipeline is not valid or the cache key is not a string.
aggregateWithTransaction()
aggregateWithTransaction<
U>(pipeline,options?):Promise<U[]>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:707
Aggregates documents in the collection using a pipeline with a transaction.
Type Parameters
U
U extends Document
Parameters
pipeline
object[]
The aggregation pipeline.
options?
AggregateOptions = {}
The aggregation options.
Returns
Promise<U[]>
The aggregation result as an array.
Throws
If the aggregation fails or the session cannot be started
bulkInsert()
bulkInsert(
docs):Promise<void>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:315
Performs a bulk insert of documents into the collection.
Parameters
docs
OptionalUnlessRequiredId<T>[]
An array of documents to insert.
Returns
Promise<void>
Resolves when the bulk insert is complete.
bulkUpdate()
bulkUpdate(
updates):Promise<void>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:329
Performs a bulk update of multiple documents in the collection.
Parameters
updates
object[]
Array of update operations.
Returns
Promise<void>
Resolves when the bulk update is complete.
create()
create(
doc):Promise<T>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:251
Creates a new document in the collection.
Parameters
doc
OptionalUnlessRequiredId<T>
The document to create.
Returns
Promise<T>
The created document with its _id.
createIndex()
createIndex(
fields):Promise<void>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:871
Creates an index on the specified fields in the collection.
Parameters
fields
Partial<Record<keyof T, 1 | -1>>
The fields to index.
Returns
Promise<void>
Resolves when the index is created.
deleteMany()
deleteMany(
filter):Promise<void>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:414
Deletes multiple documents from the collection.
Parameters
filter
Filter<T>
The filter to find the documents to delete.
Returns
Promise<void>
Resolves when the documents are deleted.
deleteOne()
deleteOne(
filter):Promise<void>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:398
Deletes a single document from the collection.
Parameters
filter
Filter<T>
The filter to find the document to delete.
Returns
Promise<void>
Resolves when the document is deleted.
deleteSecure()
deleteSecure(
filter,user):Promise<void>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:665
Deletes a document securely with user authorization.
Parameters
filter
Filter<T>
The filter to find the document.
user
The user performing the operation.
Returns
Promise<void>
Resolves when the document is deleted.
deleteWithTransaction()
deleteWithTransaction(
filter):Promise<void>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:466
Deletes a document with a transaction.
Parameters
filter
Filter<T>
The filter to find the document to delete.
Returns
Promise<void>
Resolves when the document is deleted.
dropIndex()
dropIndex(
indexName):Promise<void>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:882
Drops an index from the collection by its name.
Parameters
indexName
string
The name of the index to drop.
Returns
Promise<void>
Resolves when the index is dropped.
find()
find(
filter?):Promise<T[]>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:271
Finds documents in the collection that match the filter.
Parameters
filter?
Filter<T> = {}
The filter to apply.
Returns
Promise<T[]>
An array of matching documents.
findCached()
findCached(
key):Promise<any>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:513
Finds a document in the cache by its key.
Parameters
key
string
The cache key.
Returns
Promise<any>
The cached result or null if not found.
findOne()
findOne(
filter):Promise<T|null>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:285
Finds a single document in the collection that matches the filter.
Parameters
filter
Filter<T>
The filter to apply.
Returns
Promise<T | null>
The matching document or null if not found.
Throws
If the filter is not a valid object.
findOneAndDelete()
findOneAndDelete(
filter):Promise<T|null>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:580
Finds a document and deletes it from the collection.
Parameters
filter
Filter<T>
The filter to find the document.
Returns
Promise<T | null>
The deleted document or null if not found.
findOneAndReplace()
findOneAndReplace(
filter,replacement):Promise<T|null>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:592
Finds a document and replaces it with a new document.
Parameters
filter
Filter<T>
The filter to find the document.
replacement
T
The new document to replace the found document.
Returns
Promise<T | null>
The replaced document or null if not found.
findOneAndUpdate()
findOneAndUpdate(
filter,update):Promise<T|null>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:569
Finds a document and updates it in the collection.
Parameters
filter
Filter<T>
The filter to find the document.
update
UpdateFilter<T>
The update operation to perform.
Returns
Promise<T | null>
The updated document or null if not found.
findOneAndUpsert()
findOneAndUpsert(
filter,update):Promise<T|null>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:604
Finds a document and upserts it (inserts if not found).
Parameters
filter
Filter<T>
The filter to find the document.
update
UpdateFilter<T>
The update operation to perform.
Returns
Promise<T | null>
The updated or inserted document.
findOneAndUpsertWithTransaction()
findOneAndUpsertWithTransaction(
filter,update):Promise<T|null>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:616
Finds a document and upserts it (inserts if not found) with a transaction.
Parameters
filter
Filter<T>
The filter to find the document.
update
UpdateFilter<T>
The update operation to perform.
Returns
Promise<T | null>
The updated or inserted document.
findOneAndUpsertWithTransactionSecure()
findOneAndUpsertWithTransactionSecure(
filter,update,user):Promise<T|null>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:640
Finds a document and upserts it (inserts if not found) with a transaction and user authorization.
Parameters
filter
Filter<T>
The filter to find the document.
update
UpdateFilter<T>
The update operation to perform.
user
The user performing the operation.
Returns
Promise<T | null>
The updated or inserted document.
getSchema()
getSchema():
AbimongoSchema<T>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:389
Returns
init()
init():
Promise<void>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:134
Initializes the database connection and collection.
Returns
Promise<void>
Throws
If the collection name is not provided.
invalidateDocumentCache()
invalidateDocumentCache(
doc):Promise<void>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:965
Invalidates the cache for the specified document.
Parameters
doc
T
The document for which to invalidate the cache.
Returns
Promise<void>
Resolves when the cache is invalidated.
invalidateModelPattern()
invalidateModelPattern(
pattern):Promise<number>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:950
Instance method to invalidate cache patterns for this model's tenant context.
Parameters
pattern
string
Redis pattern to match keys (supports wildcards).
Returns
Promise<number>
Number of keys invalidated.
off()
off(
event,listener):void
Defined in: core/src/lib-core/AbimongoModelFactory.ts:123
Parameters
event
listener
(...args) => void
Returns
void
on()
on(
event,listener):void
Defined in: core/src/lib-core/AbimongoModelFactory.ts:117
Subscribes to events emitted by the model.
Parameters
event
The event type to subscribe to.
listener
(...args) => void
The callback function to execute when the event is emitted.
Returns
void
once()
once(
event,listener):void
Defined in: core/src/lib-core/AbimongoModelFactory.ts:120
Parameters
event
listener
(...args) => void
Returns
void
paginatedFind()
paginatedFind(
filter,pageSize,lastId?):Promise<T[]>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:840
Cursor-based pagination using _id comparison instead of skip.
Parameters
filter
Partial<T>
The filter for documents.
pageSize
number
Number of documents per page.
lastId?
string
Last document _id from the previous page.
Returns
Promise<T[]>
Array of documents for the current page. This method uses the _id field for pagination, which is more efficient than using skip.
populateMany()
populateMany<
K>(doc,field,relatedModel):Promise<T& { [key in string | number | symbol]?: K[] } |null>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:450
Populates a field in a document with an array of related documents.
Type Parameters
K
K extends Document
Parameters
doc
T
The document to populate.
field
keyof T
The field to populate.
relatedModel
AbimongoModel<K>
The related model to fetch data from.
Returns
Promise<T & { [key in string | number | symbol]?: K[] } | null>
The populated document.
populateOne()
populateOne<
K>(doc,field,relatedModel):Promise<T& { [key in string | number | symbol]?: K } |null>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:432
Populates a single field in a document with data from a related model.
Type Parameters
K
K extends Document
Parameters
doc
T
The document to populate.
field
keyof T
The field to populate.
relatedModel
AbimongoModel<K>
The related model to fetch data from.
Returns
Promise<T & { [key in string | number | symbol]?: K } | null>
The populated document.
registerModel()
registerModel(
options):Promise<void>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:166
Parameters
options
Returns
Promise<void>
removeListener()
removeListener(
event,listener):void
Defined in: core/src/lib-core/AbimongoModelFactory.ts:126
Parameters
event
listener
(...args) => void
Returns
void
runCommand()
runCommand(
command, ...args):Promise<any>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:1037
Runs a custom command on the collection.
Parameters
command
string
The command to run.
args
...any[]
The arguments for the command.
Returns
Promise<any>
The result of the command.
runGC()
runGC():
Promise<void>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:1047
Runs the garbage collector for expired documents.
Returns
Promise<void>
Resolves when the garbage collection is complete.
runInTransaction()
runInTransaction<
T>(operations):Promise<T>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:755
Type Parameters
T
T
Parameters
operations
(session) => Promise<T>
Returns
Promise<T>
startAutoGC()
startAutoGC(
intervalMs):void
Defined in: core/src/lib-core/AbimongoModelFactory.ts:1077
Starts the automatic garbage collection process.
Parameters
intervalMs
number = 3600000
The interval in milliseconds for the garbage collection to run.
Returns
void
streamAggregation()
streamAggregation<
U>(pipeline,options):Promise<Readable&AsyncIterable<U,any,any>>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:779
Streaming aggregation - returns a cursor for large datasets
Type Parameters
U
U extends Document
Parameters
pipeline
object[]
MongoDB aggregation pipeline
options
AggregateOptions = {}
Aggregation options
Returns
Promise<Readable & AsyncIterable<U, any, any>>
Aggregation cursor for streaming results
updateOne()
updateOne(
filter,update):Promise<void>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:302
Updates a single document in the collection.
Parameters
filter
Filter<T>
The filter to find the document.
update
UpdateFilter<T>
The update operation to apply.
Returns
Promise<void>
Resolves when the update is complete.
updateWithTransaction()
updateWithTransaction(
filter,update):Promise<void>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:492
Updates a document with a transaction.
Parameters
filter
Filter<T>
The filter to find the document to update.
update
UpdateFilter<T>
The update operation to perform.
Returns
Promise<void>
Resolves when the document is updated.
validate()
validate(
doc):Promise<T>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:217
Validates a document against the schema.
Parameters
doc
OptionalUnlessRequiredId<T>
The document to validate.
Returns
Promise<T>
The validated document.
warmCache()
warmCache(
queries?,defaultTtl?):Promise<void>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:1120
Pre-populates cache with frequently accessed data.
Parameters
queries?
object[]
Array of queries to pre-cache.
defaultTtl?
number = 3600
Returns
Promise<void>
Resolves when cache warming is complete.
watchChanges()
watchChanges(
callback):ChangeStream<T>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:860
Watches changes in the collection using MongoDB Change Streams.
Parameters
callback
(change) => void
A function to invoke when a change occurs.
Returns
ChangeStream<T>
The change stream instance.
cacheResult()
staticcacheResult(key,data,ttl?):Promise<void>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:532
Caches a result with a specified key and time-to-live (TTL).
Parameters
key
string
The cache key.
data
any
The data to cache.
ttl?
number = 3600
The time-to-live in seconds.
Returns
Promise<void>
Resolves when the data is cached.
clearCache()
staticclearCache(key):Promise<void>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:550
Clears a cached result by its key.
Parameters
key
string
The cache key.
Returns
Promise<void>
Resolves when the cache is cleared.
getCacheStats()
staticgetCacheStats(tenantId?):Promise<any>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:976
Retrieves cache statistics for monitoring and optimization.
Parameters
tenantId?
string
Optional tenant ID to get tenant-specific stats.
Returns
Promise<any>
Object containing cache statistics.
invalidatePattern()
staticinvalidatePattern(pattern):Promise<number>
Defined in: core/src/lib-core/AbimongoModelFactory.ts:892
Invalidates multiple cache entries matching a pattern.
Parameters
pattern
string
Redis pattern to match keys (supports wildcards).
Returns
Promise<number>
Number of keys invalidated.