With these it helps Serverless platforms reuse the underlying containers between distinct function invocations whenever possible. Hence you can set up a database connection pool in the global function scope and reuse it for subsequent invocations - as long as the container stays warm. GCP has a guide here using MySQL but I imagine the same applies to MongoDB.
this will help YMMV, but here are some pretty good rule of thumbs: Are you doing PowerShell based Automation work? If Yes, consider Azure Automation Runbooks. Are you building a bot? If Yes, consider the Azure Bot Framework service. Are you build a workflow that executes on a timer, especially one that integrates with other services (etc.)? If Yes, consider Logic Apps. Are you writing generic application code? If Yes, consider Azure Functions.
seems to work fine Yes, as long as the other microservices would not know or care that the Faas microservice is using this kind of technology. That's the beauty of the microservices architecture: you could have anything inside a microservice as long as it communicates to the outside world using a technology agnostic protocol that hides the underlying technology stack (yes to JSON, no to Sql protocol - database/table sharing).