You'd be correct in understanding that we switched from neo4j. I still personally think Neo4j is awesome and a great overall database.
At the beginning we used the community driver written in native Go which shortly after the official driver being release, the author no longer had time to maintain it, we switched over a good chunk of our server over to the official driver which used seabolt.
At the time we switched to the alpha when it was released we had 2 employees including myself, so it wasn't too hard to communicate how to get everything up and running whenever there was an update for the driver or seabolt, but once we started hiring on more developers it became more difficult to get everyone on the same version, depending on the OS there seemed to be different issues, which I understand I think at this point it was in beta so it was bound to have issues.
But we essentially reached a point where it felt delicate. We were using two different libraries to get back some quality of life features, if I recall we were using mapstructure to turn out structs to a map[string]interface{}, and a library called structs to take the map[string]interface{} and covert it into a struct. And at times, since we're all Go developers we felt a little helpless when there was an issue that usually seemed to point in the realm of C so it felt like an up hill battle.
Seemed like most of our developers has a issue with Seabolt so we had a meeting and looked at our options, use sql and find a good wrapper, use mongodb, which at this point recently went into beta if I recall for their official driver, and dgraph.
After writing test apps we ended up using MongoDB because it seemed to have great support for Go and their $graphLookup
command did what graph queries we needed.
I just asked around the office and everything seems to be happy with the decision to switch to Mongo. Though to note, most everyone liked working with Cypher and the Neo4j Browser, it just seemed that the driver was lacking, at times didn't feel like Go.
I feel like I've just bashed on Neo4j a bit, and I don't want to convey that, I think it's a great technology, the Neo4j Browser made it awesome to test out queries, and the Cypher language was great to work with, it just didn't work with our workflow and there was a better alternative that worked with our structure that has a really good native Go driver.
I still have hope that one day neo4j will implement the bolt protocol to Go and ditch seabolt. I think that would be a massive improvement, then add on various quality of life features that many other database drivers/wrappers have to allow for easy encoding/decoding to structs. And if that happens we'll most likely be looking at Neo4j again at that time.