David Chouinard
David Chouinard

Reputation: 6836

Neo4j.rb: autoincrement relationship attribute?

Is it possible to autoincrement an ActiveRel attribute? In contrast to ActiveRecord, it doesn't seem that ActiveNode/ActiveRel support autoincrement attributes out-of-the-box.

I considered using before_save to manually generate an id. However, it appears that it's not possible to order relationships (to find the previous highest id).

How does one implement autoincrementing ids? (I know Neo4j.rb generates UUIDs but this application requires a separate incremental serial number)

Upvotes: 1

Views: 178

Answers (1)

Brian Underwood
Brian Underwood

Reputation: 10856

There is the auto-incrementing ID from Neo4j which starts at 0 independently for nodes and relationships. It can (I think) be depended on for referring to nodes in the short-term (i.e. seconds), but not in the long term as they may get cleaned up and moved around by Neo4j for performance.

If you're thinking about putting IDs on relationships what you're doing may not be the right modeling approach for Neo4j (though I couldn't say for sure without details). Relationships themselves can't be queried directly, but rather can only be accessed via first finding nodes. I think it would make sense to have an incrementing ID which is unique for all relationships relative to a node, but not globally. This is also why Neo4j.rb doesn't generate UUIDs for relationships. You may want to consider representing the relationships as intermediate nodes.

If you want to implement an incrementing ID on an ActiveNode model, before_save should be a fine way to do it.

Upvotes: 2

Related Questions