routier-collection / plugins/mongodb/src / MongoDbPlugin
Class: MongoDbPlugin
Defined in: plugins/mongodb/src/MongoDbPlugin.ts:50
Routier over MongoDB.
Documents are stored as the entity is: Mongo has native nested objects, arrays and dates, so unlike the SQL plugins there is no JSON column to encode into and no decode on the way back. That is the whole of the storage story.
What is pushed down, and what is not
Filters, sort, skip and take reach the server. Everything else — map, group, distinct and the aggregates — is evaluated by JsonTranslator, which is correct on every backend by construction. Pushing an aggregate into an aggregation pipeline is a later optimisation with a different risk profile, and doing it badly returns wrong numbers rather than slow ones.
Saves are atomic, and what that depends on
bulkPersist runs inside driver.transaction, so a save spanning two collections either applies to both or to neither — the datastore's contract, and what the SQL plugins get from BEGIN/COMMIT.
It depends on the driver. MongoDB transactions need a replica set, and a standalone mongod rejects them outright, so MongoClientDriver takes an explicit transactions: "required" | "unavailable" rather than detecting it. A store that lost atomicity by moving to a standalone would be the worst possible thing to discover quietly.
The driver runs the save exactly once and retries nothing, so there is no transaction mechanics to reason about here — a conflict fails the save and reaches the caller, the way it does on every other backend.
Implements
IDbPlugin
Constructors
Constructor
new MongoDbPlugin(
driver,databaseName?):MongoDbPlugin
Defined in: plugins/mongodb/src/MongoDbPlugin.ts:57
Parameters
driver
databaseName?
string
Returns
MongoDbPlugin
Properties
databaseName
readonlydatabaseName:string
Defined in: plugins/mongodb/src/MongoDbPlugin.ts:55
See IDbPlugin.databaseName. Defaults to the driver's database name.
Implementation of
IDbPlugin.databaseName
Methods
query()
query<
TRoot,TShape>(event,done):void
Defined in: plugins/mongodb/src/MongoDbPlugin.ts:64
Executes a query operation on the database.
Type Parameters
TRoot
TRoot extends object
TShape
TShape extends unknown = TRoot
Parameters
event
DbPluginQueryEvent<TRoot, TShape>
The query event containing schema, parent, and query operation.
done
PluginEventCallbackResult<ITranslatedValue<TShape>>
Callback with the result or error.
Returns
void
Implementation of
IDbPlugin.query
bulkPersist()
bulkPersist(
event,done):void
Defined in: plugins/mongodb/src/MongoDbPlugin.ts:169
Executes bulk operations (add, update, remove) on the database.
Parameters
event
DbPluginBulkPersistEvent
The bulk operations event containing schema, parent, and changes.
done
PluginEventCallbackPartialResult<BulkPersistResult>
Callback with the result or error.
Returns
void
Implementation of
IDbPlugin.bulkPersist
destroy()
destroy(
event,done):void
Defined in: plugins/mongodb/src/MongoDbPlugin.ts:289
Destroys or cleans up the plugin, closing connections or freeing resources.
Parameters
event
DbPluginEvent
done
PluginEventCallbackResult<never>
Callback with an optional error.
Returns
void
Implementation of
IDbPlugin.destroy