v1.2adapters/sqlite
Tile.JS
Tile.JS
Adapters

MongoDB

Integre o Tile Database ao driver oficial do MongoDB usando um MongoClient.

MongoDB adapter

O adapter de MongoDB usa um MongoClient fornecido pelo projeto consumidor.

Ele não adiciona mongodb como dependência interna da biblioteca, então a instalação e o lifecycle do client continuam sob seu controle — totalmente ou parcialmente, conforme a configuração escolhida.

Exemplo de uso

src/database/index.ts
import { Database } from "@tile.js/database";
import { mongodbAdapter } from "@tile.js/database/adapters/mongodb";
import { MongoClient } from "mongodb";
import { memberSchema, type Member } from "./schema/member.ts";

const client = new MongoClient("mongodb://127.0.0.1:27017");

const connection = new Database({
  storage: mongodbAdapter(client, {
    dbName: "app",
    persistSchema: true,
    schemaCollection: "_tile_schemas",
    manageClient: true,
  }),
});

export const database = Object.assign(connection, {
  member: connection.collection<Member>("member", memberSchema),
});

Configuração

Prop

Type

O que o adapter faz por você

  • usa replaceOne(..., { upsert: true }) para escrita
  • usa findOne({ _id }) para leitura por id
  • cria índice único para cada campo unique, exceto _id
  • pode persistir a descrição do schema em uma collection interna

Client compatível

O adapter aceita qualquer objeto compatível com o shape de um MongoClient: precisa expor db(name?) e, opcionalmente, connect() e close().

Lifecycle

Se manageClient estiver ativo, o fluxo fica assim:

await database.connect();
await database.disconnect();

Nesse caso, o Tile delega para client.connect() e client.close().

Se manageClient: false, a conexão é controlada fora do Tile e esses métodos deixam de gerenciar o client.

Limitações importantes

Nem toda operação roda como query nativa do MongoDB

find(), countDocuments(), deleteMany() e paginate() continuam usando a semântica do Tile sobre list(). Se você precisa de filtros avançados, agregações ou paginação executada diretamente pelo banco, use o driver do MongoDB no ponto específico da aplicação.

O melhor caso de otimização acontece em findOne() quando o filtro usa um campo único, porque o adapter consegue fazer leitura indexada.

Próximo passo

On this page