Part of the problem is diversity. MongoDB, DynamoDB, Cassandra, Redis, and Neo4j all have different query models. There's no shared interface for an LLM to reason about. So instead of writing a query, the agent has to write code: SDK calls, manual aggregation, pagination logic. It becomes more complex, harder to review, and quickly breaks on anything non-trivial.
We ran into this problem with DynamoDB specifically and ended up building our own solution. I wrote about it here if anyone's curious: https://dynamosql.hashnode.dev/why-llm-agents-still-can-t-query-nosql-databases. But I'm more interested in how others have handled this. Why is it still such an unresolved problem?