Mongodb call would be `--mongodb-filter-on=receiver:action:actor`

    --mongodb-filter-on                   Mongodb: Track actions which match
                                            receiver:action:actor. Actor may be blank
                                            to include all. Receiver and Action may
                                            not be blank. Default is * include
                                            everything.

This looks like a good resource: https://github.com/EOS-BP-Developers/eosio-mongodb-queries

---

Current account balance is held in a row in the [multi index container][1] which is RAM.

From the [eosio.token contract][2]: 

    struct account {
        asset    balance;
    
        uint64_t primary_key()const { return balance.symbol.name(); }
     };

    typedef eosio::multi_index<N(accounts), account> accounts;

So when you want to transfer, the contract will iterate through the multi index container to find your "balance" based on your account name.  From there you can see the logic for a transfer here:

    void token::transfer( account_name from,
                          account_name to,
                          asset        quantity,
                          string       memo )
    {
        eosio_assert( from != to, "cannot transfer to self" );
        require_auth( from ); // requiring signature
        eosio_assert( is_account( to ), "to account does not exist");
        auto sym = quantity.symbol.name();
        stats statstable( _self, sym ); //pulling multi index container
        const auto& st = statstable.get( sym );
    
        require_recipient( from );
        require_recipient( to );
        // Assertions (if any fail, entire transaction is unwound)
        eosio_assert( quantity.is_valid(), "invalid quantity" );
        eosio_assert( quantity.amount > 0, "must transfer positive quantity" );
        eosio_assert( quantity.symbol == st.supply.symbol, "symbol precision mismatch" );
        eosio_assert( memo.size() <= 256, "memo has more than 256 bytes" );
    
    
        sub_balance( from, quantity );
        add_balance( to, quantity, from );
    }

So in essence, the contract isn't going through all of your previous transactions to prove that you have that balance, it trusts the balance it pulls from the multi index container and acts off of it.

---

To get the historical actions from an account, you don't need the mongodb database for that, you can use cleos or the RPC api and do:

    ./cleos -u https://nodes.get-scatter.com:443 get actions moonaccount1

If you want to go further back, just add the action you want to start with at the end of the call.

    ./cleos -u https://nodes.get-scatter.com:443 get actions moonaccount1 20
    
    #    0   2018-11-22T05:36:09.500     eosio.token::transfer => moonaccount1  edd0c861... {"from":"fairdapp1111","to":"moonaccount1","quantity":"200.0...
    #    1   2018-11-22T05:36:56.500     chintailease::prepare => chintailease  32636812... {"memo":"moonaccount1|1|2000|0.0055|28|1.0000|3lmgzl0ybr"}...
    #    2   2018-11-22T05:36:56.500     eosio.token::transfer => eosio.token   32636812... {"from":"moonaccount1","to":"chintailease","quantity":"11.00...
    #    3   2018-11-22T05:36:56.500     eosio.token::transfer => moonaccount1  32636812... {"from":"moonaccount1","to":"chintailease","quantity":"11.00...
    #    4   2018-11-22T05:36:56.500     eosio.token::transfer => chintailease  32636812... {"from":"moonaccount1","to":"chintailease","quantity":"11.00...
    #    5   2018-11-22T05:36:56.500    chintailease::activate => chintailease  32636812... {"memo":"moonaccount1|1|2000|0.0055|28|1.0000|3lmgzl0ybr"}...
    #    6   2018-11-22T05:50:08.500     eosio.token::transfer => eosio.token   3d87fcdd... {"from":"moonaccount1","to":"eospokerwins","quantity":"3.000...
    #    7   2018-11-22T05:50:08.500     eosio.token::transfer => moonaccount1  3d87fcdd... {"from":"moonaccount1","to":"eospokerwins","quantity":"3.000...
    #    8   2018-11-22T05:50:08.500     eosio.token::transfer => eospokerwins  3d87fcdd... {"from":"moonaccount1","to":"eospokerwins","quantity":"3.000...
    #    9   2018-11-22T05:50:18.500         eospokerwins::hit => eospokerwins  b3e0ebb4... {"player":"moonaccount1","hand":1,"slot":3}...
    #   10   2018-11-22T05:50:19.000    eospokercoin::transfer => moonaccount1  be9f0010... {"from":"eospokermine","to":"moonaccount1","quantity":"0.056...
    #   11   2018-11-22T05:50:35.500     eosio.token::transfer => eosio.token   73f1f85d... {"from":"moonaccount1","to":"eospokerwins","quantity":"3.000...
    #   12   2018-11-22T05:50:35.500     eosio.token::transfer => moonaccount1  73f1f85d... {"from":"moonaccount1","to":"eospokerwins","quantity":"3.000...
    #   13   2018-11-22T05:50:35.500     eosio.token::transfer => eospokerwins  73f1f85d... {"from":"moonaccount1","to":"eospokerwins","quantity":"3.000...
    #   14   2018-11-22T05:50:47.000       eospokerwins::stand => eospokerwins  f314b6f8... {"player":"moonaccount1","hand":1}...
    #   15   2018-11-22T05:50:48.000     eosio.token::transfer => moonaccount1  7dc88fe9... {"from":"eospokerwins","to":"moonaccount1","quantity":"3.000...
    #   16   2018-11-22T05:50:48.000    eospokercoin::transfer => moonaccount1  7dc88fe9... {"from":"eospokermine","to":"moonaccount1","quantity":"0.056...
    #   17   2018-11-22T05:51:02.500     eosio.token::transfer => eosio.token   47e6de1f... {"from":"moonaccount1","to":"eospokerwins","quantity":"3.000...
    #   18   2018-11-22T05:51:02.500     eosio.token::transfer => moonaccount1  47e6de1f... {"from":"moonaccount1","to":"eospokerwins","quantity":"3.000...
    #   19   2018-11-22T05:51:02.500     eosio.token::transfer => eospokerwins  47e6de1f... {"from":"moonaccount1","to":"eospokerwins","quantity":"3.000...
    #   20   2018-11-22T05:51:12.000       eospokerwins::stand => eospokerwins  d876a62a... {"player":"moonaccount1","hand":1}...


  [1]: https://developers.eos.io/eosio-cpp/docs/db-api
  [2]: https://github.com/EOSIO/eos/blob/master/contracts/eosio.token/eosio.token.hpp