【发布时间】:2021-06-09 14:07:09
【问题描述】:
我有一个 Neptune Gremlin 查询,它应该按其他用户保存顶点的次数降序排列顶点。它非常适用于属性值 > 0 的顶点,但由于某种原因,将属性值等于 0 的顶点放在顶部。
添加顶点时,创建的属性不带引号(因此不是字符串),并且在其他情况下增加属性时我可以对属性求和,因此它们都应该是数字。当按升序排序时,它也按预期工作(首先出现零值,然后排序正确)。
有没有人以前见过这种情况或知道为什么会发生这种情况?我不想预先过滤掉零值。
我的查询的相关部分如下(并且在排序不正确时的行为方式相同,但结果中有一些与此问题无关的内容),但我附上了完整查询的图片'正在使用它给出的结果g.V().hasLabel('trip').order().by('numSaves', desc)
【问题讨论】:
-
您好 - 我无法重现您所看到的内容。在我的测试中,我总是得到正确的排序。您的完整查询还有更多内容吗?它在屏幕截图中被裁剪掉了。您能否提供一些 addV 和 addE 步骤来构建示例图,以便使用您拥有的确切数据模型进行测试?
-
完整的查询只是
g.V().hasLabel('trip').has('published', true).where(out("hasDay").count().is(gt(0))).order().by('numSaves', desc).valueMap().select("location", "numSaves") -
我正在构建这样的顶点
g.addV("trip").property("location", "Nashville").property("numSaves", 0),然后像这样增加值g.V("<the trip ID>").property(single, "numSaves", union(values("numSaves"), constant(1)).sum()) -
再次嗨 - 我使用您提供的步骤创建了一个测试图,但我仍然无法重现您所看到的内容。我得到了预期的排序,所有零值最后出现。我不知道以前版本的引擎有任何问题,但请您分享您正在使用的引擎版本(来自
%status)。我使用'dbEngineVersion': '1.0.4.2.R2'进行了测试 -
感谢您的回复。我正在使用“dbEngineVersion”:“1.0.4.1.R4”和“gremlin”:{“version”:“tinkerpop-3.4.8”}。我注意到当我创建像
g.addV("random").property("location", "test1").property("numSaves",0)和g.addV("random").property("location", "test2").property("numSaves",10)这样的顶点时它工作得很好。但是,当我将它们全部设置为零然后通过此步骤递增时:g.V("<id of one vertex>").property(single, "numSaves", union(values("numSaves"), constant(1)).sum())它会使它们乱序,而那些从未递增。我不小心改变了类型吗?