MongoDB Atlas Data API SDK for Node.js.
npm install mongodb-data-api --save
or
yarn add mongodb-data-api
import { MongoDBDataAPI, Region } from 'mongodb-data-api'
// init by URL Endpoint
const api = new MongoDBDataAPI({
apiKey: '<your_mongodb_api_key>',
urlEndpoint: 'https://data.mongodb-api.com/app/<your_mongodb_app_id>/endpoint/data/beta'
})
// or init by app ID
const api = new MongoDBDataAPI({
apiKey: '<your_mongodb_api_key>',
appId: '<your_mongodb_app_id>'
})
// specific region of app
const api = new MongoDBDataAPI({
apiKey: '<your_mongodb_api_key>',
appId: '<your_mongodb_app_id>',
region: Region.Virginia
})
See MongoDB Data API Resources.
api.findOne
api.find
api.insertOne
api.insertMany
api.updateOne
api.updateMany
api.replaceOne
api.deleteOne
api.deleteMany
api.aggregate
- find a single document
api
.findOne({
dataSource: '<target_cluster_name>',
database: '<target_database_name>',
collection: '<target_collection_name>',
filter: { name: 'Surmon' }
})
.then((result) => {
console.log(result.document)
})
- insert a single document
api
.insertOne({
dataSource: '<target_cluster_name>',
database: '<target_database_name>',
collection: '<target_collection_name>',
document: {
name: 'Surmon',
age: 19
}
})
.then((result) => {
console.log(result.insertedId)
})
- run an aggregation pipeline
api
.aggregate({
dataSource: '<target_cluster_name>',
database: '<target_database_name>',
collection: '<target_collection_name>',
pipeline: [
{ $match: { status: 'urgent' } },
{ $group: { _id: '$productName', sumQuantity: { $sum: '$quantity' } } }
]
})
.then((result) => {
console.log(result.documents)
})
// api.$cluster
const clusterA = api.$cluster('a')
// api.$cluster.$database
const databaseB = clusterA.$database('b')
const databaseC = clusterA.$database('c')
// api.$cluster.$database.$collection
const bItemCollection = databaseB.$collection('item')
const cItemCollection = databaseC.$collection('item')
// actions
bItemCollection.findOne({ filter: {/*...*/} })
cItemCollection.insertOne({ document: {/*...*/} })
// -------------
// chaining is equivalent to the api call
api.$cluster('a').$database('b').$collection('c').findOne({ filter: {} })
// the same as
api.findOne({
dataSource: 'a',
database: 'b',
collection: 'c',
filter: {}
})
You can specific the action request to prevent this package from lagging relative to the official one.
api.$$action('findOne', {
dataSource: '...',
database: '...',
collection: '...',
filter: {}
})
# install dependencies
yarn
# lint
yarn lint
# test
yarn test
# build
yarn build
Detailed changes for each release are documented in the release notes.