Thin MongoDB ODM built for Standard Schema
mongodb
zod
deno
1import { z } from 'zod';
2import { defineModel, MongoModel, connect, disconnect, InferModel, InsertType } from '../src';
3import { ObjectId } from 'mongodb';
4
5// 1. Define your schema using Zod
6const userSchema = defineModel(z.object({
7 name: z.string(),
8 email: z.string().email(),
9 age: z.number().int().positive().optional(),
10 createdAt: z.date().default(() => new Date()),
11}));
12
13// Infer the TypeScript type from the Zod schema
14type User = InferModel<typeof userSchema>;
15type UserInsert = InsertType<typeof userSchema>;
16
17async function runExample() {
18 try {
19 // 3. Connect to MongoDB
20 await connect('mongodb://localhost:27017', 'mizzleorm_example');
21 console.log('Connected to MongoDB');
22
23 // 2. Create a MongoModel for your collection
24 const UserModel = new MongoModel('users', userSchema);
25
26 // Clean up previous data
27 await UserModel.delete({});
28
29 // 4. Insert a new document
30 const newUser: UserInsert = {
31 name: 'Alice Smith',
32 email: 'alice@example.com',
33 age: 30,
34 };
35 const insertResult = await UserModel.insertOne(newUser);
36 console.log('Inserted user:', insertResult.insertedId);
37
38 // 5. Find documents
39 const users = await UserModel.find({ name: 'Alice Smith' });
40 console.log('Found users:', users);
41
42 // 6. Find one document
43 const foundUser = await UserModel.findOne({ _id: new ObjectId(insertResult.insertedId) });
44 console.log('Found one user:', foundUser);
45
46 // 7. Update a document
47 const updateResult = await UserModel.update(
48 { _id: new ObjectId(insertResult.insertedId) },
49 { age: 31 }
50 );
51 console.log('Updated user count:', updateResult.modifiedCount);
52
53 const updatedUser = await UserModel.findOne({ _id: new ObjectId(insertResult.insertedId) });
54 console.log('Updated user data:', updatedUser);
55
56 // 8. Delete documents
57 const deleteResult = await UserModel.delete({ name: 'Alice Smith' });
58 console.log('Deleted user count:', deleteResult.deletedCount);
59
60 } catch (error) {
61 console.error('Error during example run:', error);
62 } finally {
63 // 9. Disconnect from MongoDB
64 await disconnect();
65 console.log('Disconnected from MongoDB');
66 }
67}
68
69runExample();
70
71
72
73