Mongoose
Last updated
Was this helpful?
Last updated
Was this helpful?
This is the official documentation of the @forestadmin/agent
Node.js agent.
The Mongoose data source allows importing collections from a Mongoose instance.
To make everything work as expected, you need to install the package @forestadmin/datasource-mongoose
.
When passing flattenMode: 'none'
to the Mongoose data source, the connector will map each Mongoose model to a single Forest Admin collection without transformations.
As models in Mongoose can be deeply nested, that may not be what you want:
Nested references will not be displayed as relations.
JSON editors will be displayed for nested data.
flattenMode
flattenMode: 'auto'
Arrays of objects and arrays of references are converted to independent Forest Admin collections. All other fields are moved to the root of each collection
flattenMode: 'manual'
You are in full control on which virtual collections are created, and which fields are moved
flattenMode: 'none'
No transformation are made: Forest Admin collection use the exact same structure than your Mongoose models
flattenMode: 'legacy'
Retro-compatibility with previous versions
not defined
Equivalent to legacy
but a warning is displayed at server startup
Supposing that persons
records have the following format:
The following samples are equivalent, and will import two collections into your Forest Admin panel:
persons
with the following fields: name
, age
, address->streetName
, address->city
, address->country
.
persons_bills
with the following fields: title
, amount
, issueDate
, payedBy
.
When customizing your agent, you will need to navigate through your data efficiently. This section explains how to structure paths based on different field types.
There are two different separators depending on the field type:
Nested Fields (@@@
) – Used when accessing a nested field.
Related Data (:
) – Used when accessing related data.
Consider a User
collection with an address
relation that contains a city
field, which itself has a nested name
field.
User (collection) → address (relation) → city (field) → name (nested field)
To access the name
field inside city
, the path would be:
address:city@@@name
This structure ensures a clear distinction between relationships and nested properties.