The documentation you are viewing is for Dapr v1.10 which is an older version of Dapr. For up-to-date documentation, see the latest version.
MongoDB
Component format
To setup MongoDB state store create a component of type state.mongodb
. See this guide on how to create and apply a state store configuration.
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: <NAME>
spec:
type: state.mongodb
version: v1
metadata:
- name: server
value: <REPLACE-WITH-SERVER> # Required unless "host" field is set . Example: "server.example.com"
- name: host
value: <REPLACE-WITH-HOST> # Required unless "server" field is set . Example: "mongo-mongodb.default.svc.cluster.local:27017"
- name: username
value: <REPLACE-WITH-USERNAME> # Optional. Example: "admin"
- name: password
value: <REPLACE-WITH-PASSWORD> # Optional.
- name: databaseName
value: <REPLACE-WITH-DATABASE-NAME> # Optional. default: "daprStore"
- name: collectionName
value: <REPLACE-WITH-COLLECTION-NAME> # Optional. default: "daprCollection"
- name: writeConcern
value: <REPLACE-WITH-WRITE-CONCERN> # Optional.
- name: readConcern
value: <REPLACE-WITH-READ-CONCERN> # Optional.
- name: operationTimeout
value: <REPLACE-WITH-OPERATION-TIMEOUT> # Optional. default: "5s"
- name: params
value: <REPLACE-WITH-ADDITIONAL-PARAMETERS> # Optional. Example: "?authSource=daprStore&ssl=true"
Warning
The above example uses secrets as plain strings. It is recommended to use a secret store for the secrets as described here.If you wish to use MongoDB as an actor store, append the following to the yaml.
- name: actorStateStore
value: "true"
Spec metadata fields
Field | Required | Details | Example |
---|---|---|---|
server | Y* | The server to connect to, when using DNS SRV record | "server.example.com" |
host | Y* | The host to connect to | "mongo-mongodb.default.svc.cluster.local:27017" |
username | N | The username of the user to connect with (applicable in conjunction with host ) |
"admin" |
password | N | The password of the user (applicable in conjunction with host ) |
"password" |
databaseName | N | The name of the database to use. Defaults to "daprStore" |
"daprStore" |
collectionName | N | The name of the collection to use. Defaults to "daprCollection" |
"daprCollection" |
writeConcern | N | The write concern to use | "majority" |
readConcern | N | The read concern to use | "majority" , "local" ,"available" , "linearizable" , "snapshot" |
operationTimeout | N | The timeout for the operation. Defaults to "5s" |
"5s" |
params | N** | Additional parameters to use | "?authSource=daprStore&ssl=true" |
[*] The
server
andhost
fields are mutually exclusive. If neither or both are set, Dapr will return an error.
[**] The
params
field accepts a query string that specifies connection specific options as<name>=<value>
pairs, separated by"&"
and prefixed with"?"
. e.g. to use “daprStore” db as authentication database and enabling SSL/TLS in connection, specify params as"?authSource=daprStore&ssl=true"
. See the mongodb manual for the list of available options and their use cases.
Setup MongoDB
You can run MongoDB locally using Docker:
docker run --name some-mongo -d mongo
You can then interact with the server using localhost:27017
.
If you do not specify a databaseName
value in your component definition, make sure to create a database named daprStore
.
The easiest way to install MongoDB on Kubernetes is by using the Helm chart:
helm install mongo stable/mongodb
This installs MongoDB into the default
namespace.
To interact with MongoDB, find the service with: kubectl get svc mongo-mongodb
.
For example, if installing using the example above, the MongoDB host address would be:
mongo-mongodb.default.svc.cluster.local:27017
Follow the on-screen instructions to get the root password for MongoDB.
The username is admin
by default.
Related links
- Basic schema for a Dapr component
- Read this guide for instructions on configuring state store components
- State management building block
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.