It is a trade-off. SQLite like any RDBMS with SQL lets you whip up new queries without programming anything new. I lose that. I need to create my own indexes, and write my own code to compute what an SQL query would do automatically, which might be hash join or something. But so far most access has been pretty simple and I haven't needed to code any tricky query logic yet. In the worst case I could run an EXPLAIN command on a database and see what it would do, and then code that.
LMDB gives you such fast access and iteration that you can consider it as being in memory already. So with SQLite I was copying into memory caches and then trying to keep them in sync - I'm ripping that stuff out. I was also doing all the database calls on separate threads so it wouldn't stall the UI - I'm just doing them direct now. With SQLite I had to do object-relational-mapping in many cases. With LMDB I just seralize the object into place (although strictly speaking I could have done that with SQLite and stored objects as BLOBs but then I would lose much of the SQL ability).
I think that if your data needs to be shared on a corporate network with many different applications and users accessing it, and you need to support any possible query being thought up in the future, then RBDMS is the right solution. It is much less clear when the data is only accessed by one application, and I'm leaning towards LMDB at the moment.