Ability to connect if exists, otherwise create in GraphQL mutations

I think you might be misunderstanding the @unique directive. While the it ensures it is unique within the Collection, it has no bearing on the relationships.

That is, you can have a unique fields specified in a collection but still have a one-to-many relation.

You need to store the Refs with relations to allow the GraphQL queries to work. The native GraphQL API will not resolve relations in any other way, and you cannot specify resolvers on user defined types (yet).

Even if this was all pure FQL, storing a Ref is the way to go, even if it means using the other foreign IDs to match and connect initially.