Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 类似SQL的小精灵查询在运算符中?_Neo4j_Graph Databases_Gremlin - Fatal编程技术网

Neo4j 类似SQL的小精灵查询在运算符中?

Neo4j 类似SQL的小精灵查询在运算符中?,neo4j,graph-databases,gremlin,Neo4j,Graph Databases,Gremlin,我被小精灵困住了。我有像数组的电子邮件,我需要进行查询,以找到所有与这些电子邮件的用户 在SQL中,我有 SELECT email(s) FROM user WHERE email IN (xxx, yyy...) 如何在Gremlin查询语言中执行此操作?如果可以接受对所有顶点进行线性扫描,则可以执行以下操作: gremlin> g = TinkerGraphFactory.createTinkerGraph() ==>tinkergraph[vertices:6 edges:6

我被小精灵困住了。我有像数组的电子邮件,我需要进行查询,以找到所有与这些电子邮件的用户

在SQL中,我有

SELECT email(s)
FROM user
WHERE email IN (xxx, yyy...)

如何在Gremlin查询语言中执行此操作?

如果可以接受对所有顶点进行线性扫描,则可以执行以下操作:

gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> s = ['marko','josh'] as Set
==>marko
==>josh
gremlin> g.V.filter{s.contains(it.name)}.name
==>marko
==>josh

如果可以对所有顶点进行线性扫描,则可以执行以下操作:

gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> s = ['marko','josh'] as Set
==>marko
==>josh
gremlin> g.V.filter{s.contains(it.name)}.name
==>marko
==>josh
g、 V('table_name','User').has('email',在[xxx,yyy….]).transform({['email':it.getProperty('email')])) //假设你有一个表名属性

g.V('table_name','User')。has('email',IN,[xxx,yyy…])。transform({['email':it.getProperty('email')]))
//假设你有一个表名属性,你想在这里做的是:

g.V().has('anyProperty', within('possibleValue1', 'possibleValue2'))

你想在这里做的是:

g.V().has('anyProperty', within('possibleValue1', 'possibleValue2'))

这个问题也出现在neo4j邮件列表()上,marko提供了这种使用索引的方法,从而避免了线性扫描:
[”s@s.com","e@e.com“].collect{g.V('email',it).name.next()}
这个问题也出现在neo4j邮件列表()上,marko提供了这种使用索引的方法,因此避免了线性扫描:
[”s@s.com","e@e.com“].collect{g.V('email',it.).name.next()}
欢迎来到社区,感谢您的回答。但是,请确保将来正确格式化代码。对你的代码提供一个简短的解释也很好。欢迎来到社区,谢谢你的回答。但是,请确保将来正确格式化代码。对您的代码提供一个简短的解释也很好。