w3resource

Execute MongoDB Commands via Shell Scripts for Automation

How to Execute MongoDB Commands through Shell Scripts

You can execute MongoDB commands directly from shell scripts by invoking the mongo shell with a JavaScript file or inline JavaScript commands. This technique is helpful for automation tasks, backups, and scheduled maintenance operations that require interacting with MongoDB outside of the MongoDB shell environment.

Description :

Executing MongoDB commands through shell scripts allows you to automate database operations such as backups, updates, or complex queries. This is accomplished by using the mongo shell within a shell script and passing JavaScript commands either as an inline command or as a reference to a JavaScript file. Automating MongoDB commands via shell scripts is valuable for DevOps tasks, scheduled jobs, or any repetitive database task

Syntax:

There are two primary ways to run MongoDB commands in a shell script:

Using Inline JavaScript Commands

mongo <database_name> --eval "<mongo_command>"

Using an External JavaScript File

mongo <database_name> <script.js>

Explanation:

  • <database_name>: The database you want to connect to.
  • <mongo_command>: The MongoDB command you want to execute (written in JavaScript).
  • <script.js>: A JavaScript file containing MongoDB commands to execute.

Example:

Below are examples of each method, demonstrating how to execute a MongoDB command to find documents in a users collection through a shell script.

Method 1: Inline JavaScript Command in Shell Script

Code:

#!/bin/bash
# Run a MongoDB query inline to retrieve documents from 'users' collection
# Execute the MongoDB command to find all users with age greater than 25
mongo myDatabase --eval 'db.users.find({ age: { $gt: 25 } }).forEach(printjson)'

Method 2: Using an External JavaScript File

Create a JavaScript File (query.js)

Code:

// query.js - JavaScript file with MongoDB commands
// Find all users with age greater than 25 in 'users' collection
db.users.find({ age: { $gt: 25 } }).forEach(printjson);	

Shell Script to Run the JavaScript File

Code:

#!/bin/bash
# Run a MongoDB query from an external JavaScript file
# Execute the JavaScript file using the Mongo shell
mongo myDatabase query.js

Explanation:

  • #!/bin/bash
    Indicates that this script is a shell script, using the Bash shell.
  • mongo myDatabase --eval 'db.users.find(...)'
    Executes a MongoDB command inline using the mongo shell. Here, myDatabase is the target database, and --eval allows you to execute JavaScript code directly. The command retrieves all users older than 25 from the users collection.
  • External JavaScript File (query.js)
    This file contains JavaScript code that the MongoDB shell will execute. In this case, it retrieves documents where the age is greater than 25 and prints each document using printjson.
  • mongo myDatabase query.js
    Runs the MongoDB shell command with the query.js file. This method is helpful for more complex scripts or when commands span multiple lines.

Using shell scripts to run MongoDB commands streamlines repetitive or scheduled database tasks, making it easier to integrate MongoDB operations into larger automation workflows.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://www.w3resource.com/mongodb/snippets/how-to-execute-mongodb-commands-through-shell-scripts.php