An ODM implementation for Atlas MongoDB Data API
npm install mongodb-data-api-odm




ts
import { Database } from 'mongodb-data-api-odm';const db = new Database({
credentials: {
key: 'api-key',
},
database: 'db-name',
datasource: 'ds-name',
endpoint: 'https://...',
});
`$3
Use classes and decorators to create Entity, Collection, Model or whatever name you want in your data layer
`ts
import { Collection, Field } from 'mongodb-data-api-odm';
Create
@Collection('X')
class MyCollectionX { @Field({ required: true });
public _id: string;
@Field({ required: true });
public name: string;
@Field();
public points: number[] = [];
// Not field, but your instance, your rules
public get hasPoints() {
return !!this.points.length;
}
}
`$3
`ts
class MyAnyService {
private xCollection = db.getCollection(MyCollectionX); public async getAll() {
const xses = await xCollection.find();
}
public async getAll() {
const x = await xCollection.create({ name: '', points: [0] });
}
}
`Collection Methods
- insert(data)
- insertMany(data[])
- create(data[]) - Same of insert
- find(filter?, projection?, { limit?, sort? })
- findOne(filter, projection)
- findById(_id, projection)
- updateOne(filter, partial)
- updateMany(filter, partial)
- updateById(_id, partial);
- findOneAndUpdate(filter, partial)
- findByIdAndUpdate(filter, partial)
- deleteOne(filter)
- deleteMany(filter)
- deleteById(_id)
- findOneAndDelete(filter)
- findByIdAndDelete(_id)
- ~~aggregate~~ - Comming Soon
$3
`ts // Find by regex
const w = await xCollection.findOne({
name: {
$regex: '/^Anne/g'
}
});
// Conditions
const x = await xCollection.findOne({
$and: [
{ name: '' },
{ points: { $in: [0] } }
]
});
// Find fast by ID
const y = await xCollection.findByIdAndUpdate(
'64dae34078db150688ad90db',
{ points: [1] },
);
// Delete using filters
const z = await xCollection.deleteOne({
points: {
$in: [1]
}
});
``