UI Bakery Docs
RoadmapRelease notesSign In
  • 👋Welcome to UI Bakery!
  • 🌟Overview
    • 💡Video intro
    • ✨Main features
    • 🔖Glossary
  • 🛠️Getting started
    • Create an application
    • Build UI
      • Data mocking methods
    • Link components
    • Connect a data source
    • Load data
    • Bind data to UI
    • Transform data with JavaScript
      • Data mapping & transforming
    • Change component data
    • Send a form
    • Create a filter
    • Note on debugging
    • Deploy your application & invite users
  • 📌Concepts
    • Components
      • Component basics
      • Component methods
      • Components best practices
        • Input validation
        • Linking a Table to a Form/Detail
        • Using a single Form to add and update data
        • Searching Table based on input value
        • Configuring server-side pagination
        • Managing Date object time zones
        • Role-based Menu component items
        • Field types & types recognition
          • Select/Tag field: Utilizing Tag mapper
        • Expanding component to fit screen/container
        • Controlling component's visibility
    • Custom components
      • Unrestricted custom components
    • Data sources
      • Data source environments
      • Connecting local database via ngrok
      • SSH Tunneling
    • Actions
      • Actions basics
        • Calling actions from code
      • Actions management & shortcuts
      • Actions settings
      • Actions library
      • Server actions
      • Logs and debugging
    • UI Bakery variables
    • State variables
    • Local storage
    • Modules
    • Custom JavaScript
      • JavaScript files
    • Workspace management
      • Account & workspace
      • Seats & Shared permission groups in UI Bakery
      • Roles in UI Bakery
      • Role permissions
      • Explore the interface
      • App environments
        • Release management
      • Audit logs
      • Multi-factor authentication
    • Export & import an app
    • Mobile layout
    • Theme editor
      • Changing theme from the app
    • UI Bakery source control
      • Git controls overview
      • Migrating your app model to the latest version
  • ⚡How-tos
    • File management
      • Working with PDF files
      • CSV import & export
      • Uploading files using methods
      • Displaying files from Google Drive and Dropbox
      • Parsing and sending XML
    • Styling
      • Modifying components with CSS
    • Layout & navigation
      • Adding navigation to application
      • Reading query params from URL
      • Hiding UI Bakery loader in the Embedded mode
    • Data
      • Managing user data with the {{user.email}} variable
      • Using JS libraries
        • Internationalization (i18n) & Localization: Translating UI Bakery Apps
      • Implementing row-level security
      • Copying to clipboard
    • Custom code
      • Communicating with external sites via Iframe
      • Implementing custom app hotkeys
      • Retrying API with HTTP status code 202
  • 🔎Extras
    • UI Bakery Automations
      • Environment and release strategy
      • Git in automations
      • Using external Node libraries
    • UI Bakery Database
      • Database migration
  • 💻On-premise
    • UI Bakery on-premise
    • Install & update
      • Installing on-premise
        • Azure virtual machine
        • Azure container instance
        • AWS EC2 instance
        • Google Cloud Compute Engine VM instance
        • DigitalOcean 1-click droplet
        • Manual w/ docker compose
        • Manual w/ docker run
        • Windows installation
        • Kubernetes
          • AWS EKS with Fargate
          • Scaling and resource optimization
      • Troubleshooting installation errors
      • Updating on-premise
      • Updating license key
      • Updating environment variables
      • Recommendations
        • Architecture overview
        • UI Bakery in production
        • Resource optimization
        • Running a standalone database instance
        • Generating custom secrets
    • On-premise features
      • External analytics
      • Branding
      • Embedding
      • SCIM 2.0
      • Instance API
      • Activating features under a feature flag
    • Additional configurations
      • Health check API
      • Email configuration
      • Google Sheets connection setup
      • Salesforce connection setup
      • Azure blob storage configuration
      • Adding python backend code to existing installation
      • UI Bakery Postgres
    • Networking & security
      • Setting up a domain name
      • Configuring custom certificate authority
      • Custom base URL
      • Getting requests to the local network
      • Setting up SSL on Ubuntu
    • SSO
      • OpenID
        • Google OAuth2
        • Okta ODIC
        • Azure AD OAuth2
        • Token refresh
      • SAML
        • Okta SAML
        • Azure AD SAML
      • Role synchronization
      • Multiple SSO
      • Logout redirect
      • Troubleshooting
    • Git source control
      • Manage multi-instance deployment
      • Custom PR URL
      • Automate GitHub releases
      • Automate GitLab releases
      • Automate Bitbucket releases
    • Environment variables
  • 📚Reference
    • Data security measures
    • Improving app security
    • ✨AI Assistant
    • List of Components
      • Azure Blob Storage file uploader
      • Accordion
      • Alert
      • Avatar
      • Boolean
      • Breadcrumbs
      • Bubble map
      • Button
      • Card
      • Chart
      • Chat
      • Checkbox
      • Collapsible card
      • Color picker
      • Composite form
      • Container
      • Context menu button
      • Currency
      • Currency input
      • Date picker
      • Date & time
      • Date & time picker
      • Detail
      • Divider
      • Email input
      • Embedded App
      • File
      • File dropzone
      • File picker
      • Flex container
      • Form
      • Frame drawer
      • Grid view
      • Heading
      • Horizontal menu
      • Icon
      • iFrame
      • Image
      • Image picker
      • JSON editor
      • JSON viewer
      • Link
      • List view
      • Map
      • Menu
      • Metric
      • Modal
      • Multi-select
      • Number
      • Number input
      • Password input
      • PDF viewer
      • Percent
      • Pop-up form
      • Progress bar
      • QR code
      • Radio
      • Range slider
      • Rating
      • Reusable header
      • Reusable sidebar
      • Select
      • Signature
      • Slider
      • Steps
      • Stepper
      • S3 file uploader
      • Table
        • Conditional formatting based on cell value
        • Display name instead of ID for relation
        • Row context referencing
        • Select multiple table rows
        • How to Highlight Text in a Table Using mark.js
      • Tabs
      • Tabset
      • Tags
      • Text
      • Text annotate
      • Text input
      • Time picker
      • Toggle
      • Tree component
      • Video
      • Dynamic structure properties
      • Card (deprecated)
      • Input (deprecated)
    • Upgrading components
    • List of Data sources
      • Airtable
      • AWS API
      • AWS Athena
      • AWS DynamoDB
      • AWS Lambda
      • AWS Redshift
      • AWS S3
        • S3 compatible endpoints (DigitalOcean spaces)
      • Azure Blob Storage
      • Big Query
      • Databricks
      • Exasol
      • Firestore, Firebase Auth & Realtime DB
        • Firebase authentication
        • Managing database data
        • Firebase client-side SDK
        • Firebase libraries
      • GitHub
      • Google Sheets
      • GraphQL
      • HTTP API
        • API Authentication
      • HubSpot
      • JDBC
      • MariaDB
      • MongoDB
      • MySQL
      • OpenAI
      • OpenAPI
      • Oracle
      • PostgreSQL
      • Presto
      • Redis
      • Salesforce
      • SAP Hana
      • SendGrid
      • Slack
      • SMTP
      • Snowflake
      • Spanner
      • SSH
      • Stripe
      • SQL Server
      • Supabase
      • Twilio
      • UI Bakery AI
    • List of Action steps
      • AI Action
      • Azure Blob Storage Query
      • Bulk Create Rows
      • Bulk Delete Rows
      • Condition
      • Create Row
      • Delete Row
      • DynamoDB Request
      • Execute Action
      • Firebase Query
      • Generate File
      • GraphQL Query
      • HTTP Request
      • Interval
      • JavaScript Code
      • Load Table
      • Load Row
      • Loop Action
      • MongoDB Command
      • Navigate
      • Open API Request
      • Python Backend Code
      • Redis Command
      • Save to Local Storage
      • Save to State
      • Show Notification
      • Slack messages
      • SMTP Request
      • SSH Command
      • SQL Query
        • Writing SQL Queries
      • S3 Query
      • Update Row
    • Troubleshooting techniques
    • Performance optimization
Powered by GitBook

© 2025 UI Bakery

On this page
  • MongoDB command example
  • Sample: Filter by Date
  • Sample: Aggregate
  • Sample: Join and aggregate
  • Sample: Insert multiple documents
  • Sample: Update multiple documents
  • Sample: Delete multiple documents
  • Sample: Find one and modify

Was this helpful?

Export as PDF
  1. Reference
  2. List of Action steps

MongoDB Command

PreviousLoop ActionNextNavigate

Last updated 2 months ago

Was this helpful?

The MongoDB Command step allows you to execute any MongoDB command using the db.command method.

With this step, you can leverage the full power of MongoDB commands to interact with your MongoDB database. You can perform advanced operations, run aggregation pipelines, execute complex queries, and take advantage of specialized features specific to MongoDB.

Make sure to use in your queries to prevent issues with complex data types (for example, UUID or Date).

MongoDB command example

To run a MongoDB command, you simply need to select it in the action selection dropdown and provide the necessary parameters. UI Bakery will then execute the command using the db.command method behind the scenes.

In the example below, the find command retrieves documents from the users collection where the age field is greater than or equal to 30. The projection parameter specifies that only the name and age fields should be included in the result.

{
  find: "users",
  filter: { age: { $gte: 30 } },
  projection: { name: 1, age: 1 }
}

The Command Parameters field in this action step provides a familiar code editor interface allowing you to conveniently interact with the user interface and write JavaScript code, for example:

const minAge = +{{ui.input.value}}

return {
  find: "users",
  filter: { age: { $gte: minAge } },
  projection: { name: 1, age: 1 }
}

Sample: Filter by Date

If the MongoDB Date property is of the BSON type, then in order to be able to filter by Date you should send not the date itself but rather an object with the key &date inside the &lt, &gt, &gte operators. Below is an example of the code you can use:

{
 find: "orders",
 filter: {
   "created_at": {
     $gte: {
       $date: "2022-08-11T04:00:00+0400"
     }
   }
 },
   limit: 1000
}

Sample: Aggregate

To perform data aggregation, you can use the aggregate operation with the following parameters:

{
  aggregate: "users",
  pipeline: [
    { $match: { age: { $gte: 30 } } },
    { $group: { _id: "$status", count: { $sum: 1 } } }
  ],
  cursor: { batchSize: 10 }
}

In this example, the aggregation pipeline consists of several stages:

  • $match to filter documents based on the age field

  • $group to group documents by the status field and calculate the count

Sample: Join and aggregate

You can also use the aggregate command in MongoDB to perform complex aggregations on your data by combining multiple stages in a pipeline:

{
  aggregate: "users",
  pipeline: [
    { $match: { age: { $gte: 30 } } },
    { $lookup: { from: "orders", localField: "_id", foreignField: "userId", as: "user_orders" } },
    { $unwind: "$user_orders" },
    { $group: { _id: "$_id", total_orders: { $sum: 1 }, total_amount: { $sum: "$user_orders.amount" } } },
    { $sort: { total_amount: -1 } },
    { $limit: 10 }
  ],
  cursor: { batchSize: 10 }
}

In this query, we're performing the following operations:

  1. $match - Filters the documents to include only those where the age is greater than or equal to 30.

  2. $lookup - Joins the users collection with the orders collection based on the _id field of users and the userId field of orders. This creates an array called user_orders containing the matching orders for each user.

  3. $unwind - Deconstructs the user_orders array creating separate documents for each order associated with a user.

  4. $group - Groups the documents by _id (which is the unique identifier of the user) and calculates the total number of orders (total_orders) and the total amount of orders (total_amount) by summing up the amount field from the user_orders array.

  5. $sort - Sorts the resulting documents in descending order based on the total_amount field.

  6. $limit - Limits the result to a maximum of 10 documents.

This query performs a join and aggregation operation to find users aged 30 or above, counts their total number of orders, calculates the total amount of their orders, and sorts the results by the total order amount in descending order. Finally, it limits the result to the top 10 users with the highest total order amount.

Sample: Insert multiple documents

To insert multiple documents into a collection, use the insertMany command:

{
  insert: "users",
  documents: [
    { name: "John", age: 30 },
    { name: "Jane", age: 25 }
  ],
  ordered: false
}

This example inserts two documents into the collection. Each document specifies the name and age fields.

The insert command allows you to insert one or more documents into a collection. The ordered option is set to false to continue inserting the remaining documents even if an error occurs for any individual document.

Sample: Update multiple documents

To update multiple documents in a collection, use the update command:

{
  update: "users",
  updates: [
    { q: { age: { $gte: 30 } }, u: { $set: { status: "inactive" } }, multi: true }
  ]
}

This example updates all documents in the collection where the age is greater or equal to 30. The $set operator is used to set the status field to inactive.

The update command allows you to update one or more documents in a collection. The updates array contains the update operations, where each operation has:

  • the q field for the query/filter

  • the u field for the update

  • the multi field set to true to update multiple documents

Sample: Delete multiple documents

To delete multiple documents from a collection, use the delete command:

{
  delete: "users",
  deletes: [
    { q: { status: "inactive" }, limit: 0 }
  ]
}

This example deletes all documents from the collection where the status field is inactive.

The delete command allows you to delete one or more documents in a collection. The deletes array contains the delete operations, where each operation has:

  • the q field for the query/filter

  • the limit field set to 0 to delete all matching documents

Sample: Find one and modify

The findAndModify command allows you to find a single document in your collection based on a filter condition and update it:

{
  findAndModify: "users",
  query: { name: "John" },
  update: { $set: { name: "John Doe", age: 40 } },
  new: true
}

This operation will find a document in the "users" table with the name "John" and update its age to 40 and name to John Doe.

The findAndModify command is used to atomically find and modify a document in a collection:

  • the query field specifies the filter for the document to find

  • the update field specifies the replacement document

  • the new option set to true returns the modified document

{find: 'orders', filter: { id: {$oid: 'required_id'}}}

UI Bakery supports , so you can use the$oid notation. For example, if you need to find one item by id, you can do it in the following way:

📚
MongoDB Extended JSON v2
MongoDB Extended JSON (v2)