Предполагая, что:
gremlin> g = TinkerGraph.open().traversal()
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
gremlin> g.addV().property('emails','["x@x.com","y@y.com"]')
==>v[0]
Я бы начал с того, что вам, вероятно, следует проанализировать JSON для нескольких свойств, если ваш граф поддерживает это, потому что тогда вы получите более естественный подход к работе с эти данные. Это было бы что-то вроде:
g.V(0L).values('emails').count()
У Gremlin просто нет нативных методов синтаксического анализа JSON, поэтому у меня остается два варианта:
- Использовать лямбду и Groovy
JsonSlurper
- Просто верните строку JSON и проанализируйте ее на клиенте, чтобы получить ваш счет на вашем родном языке программирования.
Если вы использовали лямбда это будет выглядеть так:
gremlin> json = new groovy.json.JsonSlurper()
==>groovy.json.JsonSlurper@421a4ee1
gremlin> g.V(0L).values('emails').map{json.parseText(it.get())}
==>[x@x.com,y@y.com]
gremlin> g.V(0L).values('emails').map{json.parseText(it.get())}.count(local)
==>2
Обратите внимание, что это предполагает, что ваш график поддерживает лямбда-выражения и что вы можете использовать JsonSlurper
в этой среде. Обычно мы стараемся заставить людей избегать лямбда-выражений, поэтому вашим лучшим выбором будет лучше моделировать ваши данные (например, с несколькими объектами или List
) или обрабатывать JSON локально.