这可能是一个基本问题,但我一生都无法在任何地方找到这方面的文档。我尝试过 https://tinkerpop.apache.org/docs/current/reference/#terminal-steps 但对于终端步骤,它似乎仅适用于 gremlin 控制台。
我在连接到 neptune 的 AWS lambda 上用 JavaScript 运行 gremlin。 next() 返回的内容是什么意思?
我称之为类似的东西
const addedItem = await g.addV('student').property('name', 'Jeffery').property('GPA', 4.0).next();
console.log('added: ' + mapToStr(addedItem));
这个输出
added: {"value":{"id":"24c52605-36ce-3194-72d6-46f5265ac59e","label":"student"},"done":false}
值是不言自明的(即使我想要返回完整的项目,我也必须添加 .valueMap()),“完成”是什么意思?这是否意味着海王星还没有添加节点?我注意到有时当我连续运行脚本时我会得到
Failed to complete Insert operation for a VertexProperty due to conflicting concurrent operations. Please retry. 0 transactions are currently rolling back.
我相信被调用的
next()
是JavaScript方法,而不是Gremlin步骤(https://www.geeksforgeeks.org/javascript-generator-next-method/),其中done
字段代表事实迭代器有可以返回的附加项。通常,当我使用 JavaScript 时,我使用 toList()
gremlin 步骤作为终端步骤,它将所有值作为列表返回,而不是像 next()
步骤那样作为迭代器。除非您返回许多值,否则您不会看到任何明显的性能差异