For example, if my smart contract holds very basic detail of a patient and I want to access his / her medical report stored in a database (mongoDB) .
To do that, you are going to need a service like Oraclizeit. You may find a rough explanation about it here: How Oraclize and API call works
And if you use Oraclizeit and it returns to your contract a big amount of data, you may explode your gas amount and won´t be able to execute your function. You should take that in count.
You can´t make a direct connection between your contract and mongoDB. Contracts must be atomic.