Aggregation use case
In this rather lengthy section, we will use the aggregation framework to process data from the Ethereum blockchain.
Using our Python code from https://github.com/agiamas/mastering-mongodb/tree/master/chapter_5, we have extracted data from Ethereum and loaded it into our MongoDB database.

Our data resides in two collections, blocks and transactions.
A sample block document has the following fields:
- Number of transactions
- Number of contract internal transactions
- Block hash
- Parent block hash
- Mining difficulty
- Gas used
- Block height
> db.blocks.findOne() { "_id" : ObjectId("595368fbcedea89d3f4fb0ca"), "number_transactions" : 28, "timestamp" : NumberLong("1498324744877"), "gas_used" : 4694483, "number_internal_transactions" : 4, "block_hash" : "0x89d235c4e2e4e4978440f3cc1966f1ffb343b9b5cfec9e5cebc331fb810bded3", "difficulty" : NumberLong("882071747513072"), "block_height" : 3923788 }
A sample transaction document has the following fields:
- Transaction hash
- Block height it belongs to
- From...