Gremlin 为什么小精灵总是返回结果?

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

我正在使用Gremlin向图形添加关键点。我有许多具有唯一UUID的关键点

获取密钥的工作原理如下:

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”顶点,而是该顶点的所有属性(名称、年龄等),谢谢,这是非常有用的。