Это явно не упоминается в документации JanusGraph, но вы можете просто определить тип данных как byte[]
следующим образом:
gremlin> mgmt = graph.openManagement()
==>org.janusgraph.graphdb.database.management.ManagementSystem@6cae2e4d
gremlin> mgmt.makePropertyKey('blob').dataType(byte[].class).cardinality(Cardinality.SINGLE).make()
==>blob
gremlin> mgmt.commit()
==>null
Теперь вы можете использовать его в своих обходах Gremlin:
gremlin> g = graph.traversal()
==>graphtraversalsource[standardjanusgraph[berkeleyje:/opt/janusgraph/conf/../db/berkeley], standard]
gremlin> g.addV().property('blob', new byte[10])
==>v[4272]
gremlin> g.V(4272).values('blob').next()
==>[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Обратите внимание, что массивы в настоящее время, к сожалению, не поддерживаются через GraphSON в JanusGraph. Таким образом, вы можете в основном использовать их только из Java с Gryo в качестве сериализатора прямо сейчас. См. JanusGraph / janusgraph # 1295 для получения дополнительной информации.
Cardinality.LIST
не предназначен для хранения массива значений, но для случаев, когда вы просто хотите иметь несколько значений для одного и того жесвойство, например, несколько разных адресов для пользователя.