MongoDB

The MongoDB connector allows you to connect one or more MongoDB Atlas Databases using the Data API to Grafbase.

The MongoDB connector accepts the following config:

  • name (required) — The unique name for the data source
  • url (required) — The MongoDB Atlas API URL
  • apiKey (required) — The MongoDB Atlas API Key
  • dataSource (required) — The MongoDB Atlas datasource
  • database (required) — The MongoDB Atlas database
import { config, connector, g } from '@grafbase/sdk'

const mongo = connector.MongoDB('MongoDB', {
  url: g.env('MONGODB_API_URL'),
  apiKey: g.env('MONGODB_API_KEY'),
  dataSource: g.env('MONGODB_DATASOURCE'),
  database: g.env('MONGODB_DATABASE'),
})

g.datasource(mongo)

export default config({
  schema: g,
})

The url for Mongo must be for the Data API and start with https://, not mongodb://.

Grafbase automatically generates a GraphQL API to read and write to MongoDB Atlas using the models you define in the schema configuration:

const address = g
  .type('Address', {
    street: g.string(),
    city: g.string(),
    country: g.string(),
  })
  .collection('addresses')

mongo
  .model('User', {
    name: g.string(),
    age: g.int().optional(),
    address: g.ref(address).optional(),
    metadata: g.json().optional(),
  })
  .collection('users')

Models can also specify different collection name, and default values:

mongo
  .model('Author', {
    name: g.string(),
    likes: g.int().default(0),
  })
  .collection('users')
Was this page helpful?