My team is visualizing a system that can easily be represented as a graph of nodes with multiple unidirectional edges, the graph need not be connected and loops can be present. We need be able to quickly pull out some or all of the graph by applying user requested filters, such as "give all edges from this node" or by metadata on them such as "give all edges with data type T", or both such as "give me a graph of all all edges with data type T which are reachable from node X" etc. Basically we want to make as convenient and flexible as possible our ability to filter and show dynamically only the parts of our graph the user currently wants/needs.
We technically do not need to do any routing, only visualizing the nodes and edges, unless it proves useful to do some basic routing as part of filter or answer a question about the existing graph.
Our existing prototype uses Mongo, java rest layer, JSON, and Angular, so a DB that would plug in easily with that basic stack (or skip the java entirely) would be good. Our graph is small enough that scaling likely won't be an issue for any decent DB, some other data, like metrics, could be larger but that could be kept in Mongo if necessary.
Good Geographical support to allow us to filter out nodes that are outside of the part of the world our user is currently interested in is a nice extra.
Finally, I would much prefer an open source product or one without licensing fees, and ideally that is actively maintained and large enough to have viable support/documentation available
Can anyone suggest the best graphical DB to support our needs?