Mongoose
Comparing Monarch with Mongoose
This page compares the Monarch ORM and Mongoose APIs. If you want to learn how to migrate from Mongoose to Monarch, check out this guide.
Monarch ORM
Monarch ORM uses a functional approach to define schemas.
import { boolean, createSchema, number, string } from "monarch-orm";
const UserSchema = createSchema("users", {
name: string().nullable(),
email: string().lowercase().optional(),
age: number().optional().default(10),
isVerified: boolean(),
});
Mongoose
Mongoose uses a class-based approach to define schemas.
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const userSchema = new Schema({
name: { type: String, required: true },
email: { type: String, lowercase: true, required: true },
age: { type: Number, default: 10 },
isVerified: { type: Boolean, default: false }
});
Monarch ORM
import { createDatabase, createClient } from "monarch-orm";
const client = createClient("mongodb://localhost:27017");
const { collections } = createDatabase(client, {
users: UserSchema,
});
Mongoose
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/mydatabase', {
useNewUrlParser: true,
useUnifiedTopology: true
});
Monarch ORM
const newUser = await collections.users
.insert()
.values({
name: "Alice",
email: "alice@example.com",
age: 25,
isVerified: true,
})
.exec();
Mongoose
const User = mongoose.model('User', userSchema);
const newUser = new User({
name: "Alice",
email: "alice@example.com",
age: 25,
isVerified: true
});
await newUser.save();
Monarch ORM
const users = await collections.users.find({ name: "Alice" }).exec();
console.log(users);
Mongoose
const users = await User.find({});
console.log(users);
Monarch ORM
const updatedUser = await collections.users
.updateOne()
.set({ email: "alice.updated@example.com" })
.where({ name: "Alice" })
.exec();
Mongoose
const updatedUser = await User.updateOne(
{ name: "Alice" },
{ email: "alice.updated@example.com" }
);
Monarch ORM
const deletedUser = await collections.users
.deleteOne()
.where({ name: "Alice" })
.exec();
Mongoose
const deletedUser = await User.deleteOne({ name: "Alice" });