Summary
Add direct MongoDB collection comparison workflows.
Motivation
MongoDB data is organized as collections instead of relational tables.
Dift should support comparing MongoDB collections in a way that feels natural to NoSQL users.
This enables:
- collection-to-collection validation
- production vs staging document comparison
- NoSQL regression testing
- application data quality checks
Proposed Improvements
- Support collection-level comparison
- Compare old and new MongoDB collections
- Use a user-defined document key for matching
- Preserve existing Dift comparison behavior where possible
Suggested Files
Potential implementation areas:
dift/io/mongodb_reader.py
dift/core/comparator.py
dift/core/schema_diff.py
dift/core/row_diff.py
tests/test_mongodb_reader.py
tests/test_mongodb_integration.py
docs/connectors/mongodb.md
Suggested Tasks
- Define MongoDB collection URI format
- Load collections into comparable tabular structure
- Support document key matching
- Add tests for collection comparisons
- Add examples
- Update documentation
How to Test
Run:
Run targeted tests:
pytest tests/test_mongodb_reader.py
pytest tests/test_mongodb_integration.py
Manual validation example:
dift mongodb://localhost:27017/shop.customers_old \
mongodb://localhost:27017/shop.customers_new \
--key customer_id
Verify:
- collections compare successfully
- added and removed documents are detected
- key-based matching works
- reports remain valid
Documentation Impact
Update:
docs/connectors/mongodb.md
docs/examples.md
docs/connectors/index.md
Documentation should include:
- collection comparison examples
- document key usage
- supported URI format
- expected output behavior
Acceptance Criteria
- MongoDB collections can be compared directly
- Key-based document matching works
- Existing comparison reports work with MongoDB data
- Tests pass
- Documentation updated
Summary
Add direct MongoDB collection comparison workflows.
Motivation
MongoDB data is organized as collections instead of relational tables.
Dift should support comparing MongoDB collections in a way that feels natural to NoSQL users.
This enables:
Proposed Improvements
Suggested Files
Potential implementation areas:
Suggested Tasks
How to Test
Run:
pytest ruff check .Run targeted tests:
Manual validation example:
dift mongodb://localhost:27017/shop.customers_old \ mongodb://localhost:27017/shop.customers_new \ --key customer_idVerify:
Documentation Impact
Update:
Documentation should include:
Acceptance Criteria