There are several site collections under a single app and unfortunately they are all in same database. And we dont have database backup that old that we need. Anyway we have automated backup-spfarm files but we want to restore only a single site collection. How can we do that? Restore-spfarm seems can not restore single site collection.
If the site collection is the only resident of its content database, then you should be able to target the content database with the -ITEM parameter for Restore-SPFarm.
Since you target an individual site collection lives in a content database with more than one site collection in it, you have to consider one of the following options:
Restore the farm backup content database to a different farm, then do a Backup-SPSite of the target site collection and restore that backup to your production farm.
Use SQL Server backups, restore the backup as a new database in your instance then join it to your farm as an unattached DB and do a granular restore from that unattached DB.