--- id: mongodb title: MongoDB --- ToolJet can connect to MongoDB to read and write data.
**Note:** Make sure to replace username, password, cluster, and database with your actual MongoDB details. If your MongoDB instance requires additional connection options, you can usually append these options to the connection string.
:::tip
Query results can be transformed using transformations. Read our transformations documentation to see how: [link](/docs/tutorial/transformations)
:::
### Find One
Return a document which satisfy the given filter and options. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/findOne)
#### Required Parameters:
- **Collection**
#### Optional Parameters:
- **Filter**
- **Option**
### Find Many
Return list of documents which satisfy the given filter and options. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/find/)
#### Required Parameters:
- **Collection**
#### Optional Parameters:
- **Filter**
- **Option**
### Total Count
Returns an estimation of the number of documents in the collection based on collection metadata. [Reference](https://mongodb.github.io/node-mongodb-native/4.0/classes/collection.html#estimateddocumentcount)
#### Required Parameters:
- **Collection**
#### Optional Parameters:
- **Option**
### Count
Returns the number of documents based on the filter. [Reference](https://mongodb.github.io/node-mongodb-native/4.0/classes/collection.html#countdocuments)
#### Required Parameters:
- **Collection**
#### Optional Parameters:
- **Filter**
- **Option**
### Distinct
Retrieve a list of distinct values for a field based on the filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/distinct/)
#### Required Parameters:
- **Collection**
- **Field**
#### Optional Parameters:
- **Filter**
- **Option**
### Insert One
Insert a document. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/insertOne/)
#### Required Parameters:
- **Collection**
- **Document**
#### Optional Parameters:
- **Option**
#### Example:
```json
{
"name": "John Doe",
"age": 30
}
```
### Insert Many
Insert list of documents. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/insertMany/)
#### Required Parameters:
- **Collection**
- **Document**
#### Optional Parameters:
- **Option**
#### Example
```json
[
{
"name": "Product1",
"price": 100
},
{
"name": "Product2",
"price": 150
}
]
```
### Update One
Update a document based on the filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/updateOne/)
#### Required Parameters:
- **Collection**
- **Filter**
- **Update**
#### Optional Parameters:
- **Option**
#### Example
##### Filter
```json
{
"name": "John Doe"
}
```
##### Update
```json
{
"$set": {
"age": 31
}
}
```
### Update Many
Update many documents based on the filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/updateMany/)
#### Required Parameters:
- **Collection**
- **Filter**
- **Update**
#### Optional Parameters:
- **Option**
#### Example
##### Filter
```json
{
"status": "pending"
}
```
##### Update
```json
{
"$set": {
"status": "completed"
}
}
```
### Replace One
Replace a document based on filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/replaceOne/)
#### Required Parameters:
- **Collection**
- **Filter**
- **Replacement**
#### Optional Parameters:
- **Option**
#### Example
##### Filter
```json
{
"product_id": 123
}
```
##### Replacement
```json
{
"product_id": 123,
"name": "New Product",
"price": 200
}
```
### Find One and Update
If your application requires the document after updating, use this instead of **Update One**. [Reference](https://mongodb.github.io/node-mongodb-native/4.0/classes/collection.html#findoneandupdate)
#### Required Parameters:
- **Collection**
- **Filter**
- **Update**
#### Optional Parameters:
- **Option**
#### Example
##### Filter
```json
{
"employee_id": 456
}
```
##### Update
```json
{
"$inc": {
"salary": 5000
}
}
```
### Find One and Replace
If your application requires the document after updating, use this instead of **Replace One**. [Reference](https://mongodb.github.io/node-mongodb-native/4.0/classes/collection.html#findoneandreplace)
#### Required Parameters:
- **Collection**
- **Filter**
- **Replacement**
#### Optional Parameters:
- **Option**
#### Example
##### Filter
```json
{
"product_id": 789
}
```
##### Replacement
```json
{
"product_id": 789,
"name": "Updated Product",
"price": 300
}
```
### Find One and Delete
If your application requires the document after deleting, use this instead of **Delete One**. [Reference](https://mongodb.github.io/node-mongodb-native/4.0/classes/collection.html#findoneanddelete)
#### Required Parameters:
- **Collection**
- **Filter**
#### Optional Parameters:
- **Option**
#### Example
```json
{
"order_id": 101
}
```
### Aggregate
Aggregation operations are expressions you can use to produce reduced and summarized results. [Reference](https://docs.mongodb.com/drivers/node/v4.0/fundamentals/aggregation/)
#### Required Parameters:
- **Collection**
- **Pipeline**
#### Optional Parameters:
- **Option**
#### Example
```json
[
{
"$match": {
"status": "completed"
}
},
{
"$group": {
"_id": "$product_id",
"totalSales": {
"$sum": "$amount"
}
}
}
]
```
### Delete One
Delete a record based on the filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/deleteOne/)
#### Required Parameters:
- **Collection**
- **Filter**
#### Optional Parameters:
- **Option**
#### Example
```json
{
"user_id": 123
}
```
### Delete Many
Delete many records based on the filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/deleteMany/)
#### Required Parameters:
- **Collection**
- **Filter**
#### Optional Parameters:
- **Option**
#### Example
```json
{
"status": "cancelled"
}
```
### Bulk Operations
Perform bulk operations. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/bulkWrite/)
#### Required Parameters:
- **Collection**
- **Operations**
#### Optional Parameters:
- **Option**
#### Example
```json
[
{
"insertOne": {
"document": {
"item": "apple",
"quantity": 50
}
}
},
{
"updateOne": {
"filter": {
"item": "orange"
},
"update": {
"$set": {
"quantity": 100
}
}
}
},
{
"deleteOne": {
"filter": {
"item": "banana"
}
}
}
]
```