= mongodb
:type: processor
:status: experimental
:categories: ["Services"]



////
     THIS FILE IS AUTOGENERATED!

     To make changes, edit the corresponding source file under:

     https://github.com/redpanda-data/connect/tree/main/internal/impl/<provider>.

     And:

     https://github.com/redpanda-data/connect/tree/main/cmd/tools/docs_gen/templates/plugin.adoc.tmpl
////

// © 2024 Redpanda Data Inc.


component_type_dropdown::[]


Performs operations against MongoDB for each message, allowing you to store or retrieve data within message payloads.

Introduced in version 3.43.0.


[tabs]
======
Common::
+
--

```yml
# Common config fields, showing default values
label: ""
mongodb:
  url: mongodb://localhost:27017 # No default (required)
  database: "" # No default (required)
  username: ""
  password: ""
  collection: "" # No default (required)
  operation: insert-one
  write_concern:
    w: ""
    j: false
    w_timeout: ""
  document_map: ""
  filter_map: ""
  hint_map: ""
  upsert: false
```

--
Advanced::
+
--

```yml
# All config fields, showing default values
label: ""
mongodb:
  url: mongodb://localhost:27017 # No default (required)
  database: "" # No default (required)
  username: ""
  password: ""
  app_name: benthos
  collection: "" # No default (required)
  operation: insert-one
  write_concern:
    w: ""
    j: false
    w_timeout: ""
  document_map: ""
  filter_map: ""
  hint_map: ""
  upsert: false
  json_marshal_mode: canonical
```

--
======

== Fields

=== `url`

The URL of the target MongoDB server.


*Type*: `string`


```yml
# Examples

url: mongodb://localhost:27017
```

=== `database`

The name of the target MongoDB database.


*Type*: `string`


=== `username`

The username to connect to the database.


*Type*: `string`

*Default*: `""`

=== `password`

The password to connect to the database.
[CAUTION]
====
This field contains sensitive information that usually shouldn't be added to a config directly, read our xref:configuration:secrets.adoc[secrets page for more info].
====



*Type*: `string`

*Default*: `""`

=== `app_name`

The client application name.


*Type*: `string`

*Default*: `"benthos"`

=== `collection`

The name of the target collection.


*Type*: `string`


=== `operation`

The mongodb operation to perform.


*Type*: `string`

*Default*: `"insert-one"`

Options:
`insert-one`
, `delete-one`
, `delete-many`
, `replace-one`
, `update-one`
, `find-one`
.

=== `write_concern`

The write concern settings for the mongo connection.


*Type*: `object`


=== `write_concern.w`

W requests acknowledgement that write operations propagate to the specified number of mongodb instances.


*Type*: `string`

*Default*: `""`

=== `write_concern.j`

J requests acknowledgement from MongoDB that write operations are written to the journal.


*Type*: `bool`

*Default*: `false`

=== `write_concern.w_timeout`

The write concern timeout.


*Type*: `string`

*Default*: `""`

=== `document_map`

A bloblang map representing a document to store within MongoDB, expressed as https://www.mongodb.com/docs/manual/reference/mongodb-extended-json/[extended JSON in canonical form^]. The document map is required for the operations insert-one, replace-one and update-one.


*Type*: `string`

*Default*: `""`

```yml
# Examples

document_map: |-
  root.a = this.foo
  root.b = this.bar
```

=== `filter_map`

A bloblang map representing a filter for a MongoDB command, expressed as https://www.mongodb.com/docs/manual/reference/mongodb-extended-json/[extended JSON in canonical form^]. The filter map is required for all operations except insert-one. It is used to find the document(s) for the operation. For example in a delete-one case, the filter map should have the fields required to locate the document to delete.


*Type*: `string`

*Default*: `""`

```yml
# Examples

filter_map: |-
  root.a = this.foo
  root.b = this.bar
```

=== `hint_map`

A bloblang map representing the hint for the MongoDB command, expressed as https://www.mongodb.com/docs/manual/reference/mongodb-extended-json/[extended JSON in canonical form^]. This map is optional and is used with all operations except insert-one. It is used to improve performance of finding the documents in the mongodb.


*Type*: `string`

*Default*: `""`

```yml
# Examples

hint_map: |-
  root.a = this.foo
  root.b = this.bar
```

=== `upsert`

The upsert setting is optional and only applies for update-one and replace-one operations. If the filter specified in filter_map matches, the document is updated or replaced accordingly, otherwise it is created.


*Type*: `bool`

*Default*: `false`
Requires version 3.60.0 or newer

=== `json_marshal_mode`

The json_marshal_mode setting is optional and controls the format of the output message.


*Type*: `string`

*Default*: `"canonical"`
Requires version 3.60.0 or newer

|===
| Option | Summary

| `canonical`
| A string format that emphasizes type preservation at the expense of readability and interoperability. That is, conversion from canonical to BSON will generally preserve type information except in certain specific cases. 
| `relaxed`
| A string format that emphasizes readability and interoperability at the expense of type preservation. That is, conversion from relaxed format to BSON can lose type information.

|===


