Skip to main content

MongoDB

DoubleDino Proxy supports native MongoDB query filters.

Unlike SQL databases, MongoDB does not use SQL queries. DoubleDino keeps the native MongoDB filter syntax and adds the collection name before the filter.

Format:

collection;filter

Example:

users;{"is_active": true}

The filter portion uses standard MongoDB query syntax.

Endpoint

Use:

/query

Basic query

Example:

Find active users:

curl -G "http://localhost:8080/query" \
--data-urlencode 'q=users;{"is_active": true}' \
-H "x-api-key: your-api-key"

Example response:

{
"_id": "84sfg730",
"email": "[email protected]",
"is_active": true,
"profile": {
"name": "Xk92Lm"
}
}

The document structure remains unchanged while sensitive values are transformed.

Using MongoDB filters

The filter uses normal MongoDB syntax.

Examples:

Match a field

users;{"is_active": true}

Match nested fields

users;{"profile.country": "AU"}

Multiple conditions

users;{
"is_active": true,
"role": "admin"
}

MongoDB operators

Standard MongoDB operators are supported.

Example:

{
"created_at": {
"$gt": "2026-01-01"
}
}

Debugging production issues

A common workflow is starting with a known identifier.

Example:

User ID: 65abc123

Query:

{
"_id": "65abc123"
}

Using DoubleDino:

users;{"_id":"65abc123"}

The query locates the real production document.

The returned document contains transformed values:

{
"_id": "84sfg730",
"email": "[email protected]"
}

This allows developers to investigate production issues without exposing original data.

Nested documents

MongoDB documents can contain nested objects and arrays.

DoubleDino transforms nested values while preserving:

  • Document structure.
  • Arrays.
  • Field relationships.
  • Data types.

Example:

Before:

{
"customer": {
"name": "Alice",
"orders": [
{
"id": 123
}
]
}
}

After:

{
"customer": {
"name": "Eotrl",
"orders": [
{
"id": 123
}
]
}
}

Multiple collections

Each request targets one collection.

Example:

users;{"is_active": true}

For another collection:

orders;{"status":"pending"}

Make a separate request.

Preserving expressions

MongoDB follows the same expression preservation rules as other supported data sources.

If enabled by your administrator:

DD_ALLOW_DYNAMIC_EXPRESSIONS=true

you can send:

x-preserve-expressions

Example:

-H "x-preserve-expressions: tracking metadata"

Notes

  • DoubleDino does not modify MongoDB data.
  • Queries use native MongoDB filter syntax.
  • Returned documents are always transformed.
  • The original database remains unchanged.

Next steps

Continue with:

  • Redis
  • Logs