| Crates.io | mongosh |
| lib.rs | mongosh |
| version | 0.7.0 |
| created_at | 2025-12-08 06:21:57.665183+00 |
| updated_at | 2026-01-12 07:03:23.501004+00 |
| description | A high-performance MongoDB Shell implementation in Rust |
| homepage | |
| repository | https://github.com/daleione/mongosh |
| max_upload_size | |
| id | 1972805 |
| size | 813,761 |
A powerful MongoDB CLI written in Rust, featuring intelligent auto-completion, SQL query support, and enhanced security features for productive database operations.
Note: This project is an independent, community-driven tool. It is NOT affiliated with MongoDB, and it is not intended to be a drop-in replacement for the official
mongosh.
| Feature | Official mongosh | This Project |
|---|---|---|
| Implementation | Node.js | Rust (async) |
| JS Runtime | Full JavaScript | โ Not a JS shell |
| Startup Time | Slower | Fast |
| Output | JSON-first | Tables + highlighted JSON |
| Scripting | JS-based | CLI / batch-oriented |
| Target Users | General users | Power users / DevOps |
cargo install mongosh
Note: The binary name may change in the future to avoid conflicts with the official MongoDB shell.
# Connect to local MongoDB
mongosh
# Connect to a specific host
mongosh mongodb://localhost:27017
# Connect with authentication (credentials are automatically sanitized in logs)
mongosh mongodb://username:password@localhost:27017/dbname
// Show Databases
show dbs
// Switch Database
use mydb
// Show Collections
show collections
// Insert a Document
db.users.insertOne({ name: "John Doe", age: 25 });
// Query Documents
db.users.find({ age: { $gte: 18 } });
// Update Documents
db.users.updateOne({ name: "John Doe" }, { $set: { age: 26 } });
// Aggregation Pipeline
db.orders.aggregate([
{ $match: { status: "completed" } },
{ $group: { _id: "$userId", total: { $sum: "$amount" } } },
]);
This shell now supports SQL SELECT queries that are automatically translated to MongoDB queries!
-- Simple query with filtering and sorting
SELECT name, age FROM users WHERE age > 18 ORDER BY name ASC
-- Pagination with LIMIT and OFFSET
SELECT * FROM users LIMIT 10 OFFSET 5
-- Column aliases support both identifiers and quoted strings
SELECT group_id AS 'group_id', COUNT(*) FROM templates GROUP BY group_id
-- Group by with multiple aggregates
SELECT
category,
COUNT(*) AS total,
SUM(price) AS revenue
FROM products
GROUP BY category
*=, !=, >, <, >=, <=)| SQL | MongoDB |
|---|---|
SELECT * FROM users |
db.users.find({}) |
SELECT name, age FROM users |
db.users.find({}, {name: 1, age: 1}) |
WHERE age > 18 |
{age: {$gt: 18}} |
WHERE status = 'active' AND age >= 18 |
{$and: [{status: 'active'}, {age: {$gte: 18}}]} |
ORDER BY name ASC |
{name: 1} |
LIMIT 10 |
limit(10) |
GROUP BY category |
aggregate([{$group: {_id: "$category"}}]) |
SELECT COUNT(*) FROM users |
aggregate([{$group: {_id: null, COUNT_*: {$sum: 1}}}]) |
SELECTLicensed under the MIT License.
Contributions are welcome! Please feel free to submit a Pull Request.
If you have any questions, suggestions, or issues, please open an issue on GitHub.