π¨π³ δΈζζζ‘£ | Chinese README
A complete Python MongoDB query API, supporting both direct API calls and HTTP RESTful API, with built-in optimized Swagger UI documentation.
- π Flexible Connection Management - Custom MongoDB connection string support
- π Powerful Query - Supports simple, complex, and aggregation queries
- π― Single Document Query - Supports query_one to get a single document
- π― Distinct Query - Supports distinct to get unique field values
- π Statistics - Get collection statistics
- π HTTP API - RESTful API interface
- π Swagger Docs - Built-in Swagger UI for online testing
- π‘οΈ Error Handling - Robust error and exception handling
- π Logging - Detailed operation logs
- π Connection Pool - Automatic connection management and resource release
- β‘ Auto Connect/Disconnect - New API supports auto connect/disconnect
- π Force Refresh Cache - Force data refresh from DB
- π‘οΈ Redis Fallback - Redis errors will not affect core features
pip install -r requirements.txtpython-mongodb-api/
βββ mongodb_api.py # Core MongoDB query API class
βββ fastapi_mongodb.py # FastAPI HTTP interface
βββ swagger_config.py # Swagger UI config
βββ start_api.py # Startup script
βββ example_usage.py # Usage examples
βββ config.py # Config file
βββ requirements.txt # Dependencies
βββ README.md # Project documentation
python start_api.py
python start_api.py --reload
python start_api.py --port 8080
python start_api.py --log-level debugpython fastapi_mongodb.pyAfter starting, visit:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
- Health Check: http://localhost:8000/health
- Open http://localhost:8000/docs
- View API docs and examples
- Use "Try it out" to test APIs
- See request/response samples
import requests
# Query API
response = requests.post("http://localhost:8000/query", json={
"connection_string": "mongodb://localhost:27017/",
"database_name": "test_db",
"collection_name": "users",
"query_filter": {"age": {"$gte": 25}},
"projection": {"name": 1, "age": 1, "email": 1, "_id": 0},
"sort": [["age", -1]],
"limit": 10
})
# Force refresh cache
response = requests.post("http://localhost:8000/query", json={
"connection_string": "mongodb://localhost:27017/",
"database_name": "test_db",
"collection_name": "users",
"query_filter": {"age": {"$gte": 25}},
"force_refresh": True
})
# Aggregation query
response = requests.post("http://localhost:8000/aggregate", json={
"connection_string": "mongodb://localhost:27017/",
"database_name": "test_db",
"collection_name": "users",
"pipeline": [
{"$match": {"age": {"$gte": 25}}},
{"$group": {"_id": "$department", "count": {"$sum": 1}}}
]
})import requests
# 1. Connect
response = requests.post("http://localhost:8000/connect", json={
"connection_string": "mongodb://localhost:27017/",
"database_name": "test_db",
"collection_name": "users"
})
# 2. Query
response = requests.post("http://localhost:8000/query", json={
"query_filter": {"age": {"$gte": 25}},
"projection": {"name": 1, "age": 1, "email": 1, "_id": 0},
"sort": [["age", -1]],
"limit": 5
})
# 3. Disconnect
response = requests.post("http://localhost:8000/disconnect")from mongodb_api import MongoDBQueryAPI
api = MongoDBQueryAPI()
api.connect_to_mongodb(
connection_string="mongodb://localhost:27017/",
database_name="test_db",
collection_name="users"
)
query_result = api.query_documents(
query_filter={"age": {"$gte": 25}},
projection={"name": 1, "age": 1, "email": 1, "_id": 0},
sort=[("age", -1)],
limit=5
)
api.close_connection()POST /query- Query documents (auto connect/disconnect)POST /query_one- Query a single document (auto connect/disconnect)POST /aggregate- Aggregation query (auto connect/disconnect)POST /distinct- Distinct field values (auto connect/disconnect)
POST /connect- Connect to MongoDBPOST /disconnect- Disconnect
GET /stats- Get collection stats
GET /health- Health checkGET /- API info
For full documentation, advanced usage, error handling, and more, please refer to the Chinese README.

