Gremlin 为什么小精灵总是返回结果?
我正在使用Gremlin向图形添加关键点。我有许多具有唯一UUID的关键点 获取密钥的工作原理如下:Gremlin 为什么小精灵总是返回结果?,gremlin,tinkerpop,tinkerpop3,gremlin-server,Gremlin,Tinkerpop,Tinkerpop3,Gremlin Server,我正在使用Gremlin向图形添加关键点。我有许多具有唯一UUID的关键点 获取密钥的工作原理如下: g.V().hasLabel(“key”).property(“uuid”、“foobar”).count() 或 g.V().hasLabel(“key”).property(“uuid”、“foobar”) 无论我为foobar填写什么,它总是返回一个对象,并且计数总是=1 这怎么可能呢?这两个小精灵片段都不涉及“获取关键点”-它们实际上是将标签为“关键点”的所有顶点设置为具有值为“foob
g.V().hasLabel(“key”).property(“uuid”、“foobar”).count()
或
g.V().hasLabel(“key”).property(“uuid”、“foobar”)
无论我为foobar
填写什么,它总是返回一个对象,并且计数总是=1
这怎么可能呢?这两个小精灵片段都不涉及“获取关键点”-它们实际上是将标签为“关键点”的所有顶点设置为具有值为“foobar”的名为“uuid”的属性。也许这就是你的意思 无论哪种方式,您都会得到一个
count()
“1”,因为您的遍历将返回您设置属性的顶点,并且您的图形中可能只有一个带有“键”标签的顶点
如果这不是您的意思,那么要获得键的值,您可以执行以下操作:
g.V().hasLabel("key").properties("uuid","foobar").count()
假设“uuid”和“foobar”都是带有“key”标签的单个顶点上的属性键,则返回的
count()
为“2”。O boy,这很明显。。。.has()
和之间的主要区别是什么。属性()
。顺便说一句,谢谢:-)has()
是一个过滤函数,意思是“找到具有某些条件的元素”,而properties()
更像是一个映射函数,意思是“对于当前元素,从中获取属性
对象。你应该试着把小精灵行中的每一步都想象成拥有某个对象(即一个Traverser
)通过它,然后该对象被过滤、变换、分支等。因此,将g.V().has('person'、'name'、'marko').properties()分开。
。第一步是V()
,意思是“开始遍历所有顶点”。在has()
处,您可以从V()想象第一个顶点
通过。has()
是一个过滤器,这个过滤器说,只有当它有“person”标签和“marko”的“name”属性时才允许通过顶点。然后,对于properties()
我们知道我们只有到达这一步的“marko”顶点,并且我们知道properties()
是一种映射(即变换)所以你不会得到一个结果的“marko”顶点,而是该顶点的所有属性(名称、年龄等),谢谢,这是非常有用的。