I have an undirected graph where each node contains an array. Data can be added/deleted from the array. What’s the best way to store this in Mongodb and be able to do this query effectively: given node A, select all the data contained in the adjacent nodes of A.
In relational DB, you can create a table representing the edges and another table for storing the data in each node this so.
table 1
NodeA, NodeB
NodeA, NodeC
table 2
NodeA, item1
NodeA, item2
NodeB, item3
And then you join the tables when you query for the data in adjacent nodes. But join is not possible in MongoDB, so what’s the best way to setup this database and efficiently query for data in adjacent nodes (favoring performance slightly over space).
I’m picking up mongo, looking into this sort of schema as well (undirected graphs, querying for information from neighbors) I think the way that I favor so far looks something like this:
Each node contains an array of neighbor keys, like so.
To find data from neighbors, use the $in “operator”:
You can use field selection to limit results to the relevant data.