Database

JWeb provides a fluent DSL for MongoDB operations with schemas, queries, updates, and deletes.

Connection

import static com.osmig.Jweb.framework.db.mongo.Mongo.*;

// Connect with URI and database name
Mongo.connect("mongodb://localhost:27017", "mydb");

// Or use environment variables (MONGO_URI, MONGO_DB)
Mongo.connect();

Documents

Use Doc for dynamic document creation and field access.

import static com.osmig.Jweb.framework.db.mongo.Doc.*;

// Create a document
Doc user = Doc.of("users")
    .set("name", "John")
    .set("email", "john@example.com")
    .set("age", 25);

// Save to database
Mongo.save(user);

// Access fields
String name = user.getString("name");
int age = user.getInt("age");

Queries

Fluent query builder with filters, sorting, and pagination.

// Find by ID
Doc user = Mongo.findById("users", id);

// Find with filters
List<Doc> users = Mongo.find("users")
    .where("age").gte(18)
    .where("status", "active")
    .orderBy("name")
    .limit(10)
    .toList();

// Find first match
Doc admin = Mongo.find("users")
    .where("role", "admin")
    .first();

Updates

// Update fields
Mongo.update("users")
    .where("id", id)
    .set("name", "Jane")
    .set("age", 26)
    .execute();

// Increment a field
Mongo.update("users")
    .where("id", visitorId)
    .inc("visitCount", 1)
    .execute();

Deletes

// Delete by ID
Mongo.delete("users")
    .where("id", userId)
    .execute();

// Delete multiple
Mongo.delete("users")
    .where("status", "inactive")
    .executeAll();

Schema Definition

Define schemas for validation and automatic timestamps.

import static com.osmig.Jweb.framework.db.mongo.Schema.*;

Schema.collection("users")
    .id("id")
    .string("name").required()
    .string("email").required().unique()
    .integer("age").min(0).max(150)
    .list("roles")
    .timestamps()
    .register();
Schemas add createdAt/updatedAt automatically when timestamps() is called.