问题标签 [azure-cosmosdb-gremlinapi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
azure-cosmosdb - 麻烦同时获取过滤的顶点和未过滤的顶点计数
我正在尝试返回与模式匹配的有限数量的顶点,以及与该模式匹配的顶点的总数(非限制)。
用简单的英语,我正在寻找一个人,找到那个人的所有联系人列表,找到这些联系人列表的所有订阅者,对订阅者进行重复数据删除,对订阅者进行排序,在那里暂停以收集所有内容,然后将结果投影到表格
投影的“人”部分展开,过滤为仅包含“docId”大于“23”的结果,限制为 2,然后再次投影。
投影的“总”部分展开(无限制)并计算在内。
我的目标是允许对模式进行分页,同时仍检索与模式关联的顶点总数。
不幸的是,在 cosmosdb 上,此查询不起作用。结果在表格中
并且只返回第一人称结果(而不是数组)。
任何帮助将不胜感激!
azure-cosmosdb - 如何在 Gremlin 中将边从一个顶点复制到新顶点
背景:我尝试使用这个问题作为基线,但因为我使用的是 Cosmos 并且有一个稍微不同的场景,所以我无法让它工作。
我想知道是否可以将所有边(进出)从一个顶点复制到 CosmosDb Gremlin 中的一个新顶点。原因是我使用用户名作为分区键,例如 User-User123,在 Cosmos DB 中,一旦设置就无法更改。
这个想法是,如果用户想要更改他们的用户名,从 User123 到 User123db,
- 将使用 User-User123db 的新分区键创建一个新顶点。
- User-User123 的所有边都指向 User-User123db
- 然后将删除 Vertex User-User123。
使用下面的 tinkerpop 图,如何创建一个名为 marko2 的新顶点并将所有从 marko 的入边和出边指向新的 marko2 顶点,然后删除旧的 marko。
感谢任何可以提供帮助的人=)
azure-cosmosdb - CosmosDB Gremlin:在后续的 where 过滤器中使用存储的值
尝试根据存储的字符串列表进行过滤时遇到问题。我想在 a 中构建这个列表,sideEffect()
然后在后续的where(without())
. 我期待一个用户列表,不包括user.a1
在以下示例中,但user.a1
包括在内。
我假设发生这种情况是因为 Gremlin 正在检查文字 string exclude
,那么我如何让它检查存储在exclude
变量中的 ID 呢?
例如,这有效:
编辑#1
尝试了stephen mallette建议的查询,但仍然没有得到我正在寻找的内容(也许在 CosmosDB 上不可能?)。
首先,显然filter
不是 CosmosDB 上的可用功能:
第二个建议导致了一个空集,而第二个确实有效:
问题是我想使用它们的属性值过滤边缘。我的实际情况是,如果可能,我想将以下两个查询合并为一个:获取一组role
顶点 ID,然后获取拥有其中一个角色并属于组子集的用户。(用户属于一个组,其角色 ID 在该组中设置为 user->groupbelongs_to
边缘的属性。)
- 从角色层次结构中获取一组角色(
role.2
+所有父母)
- 在 group.B 或以上角色中获取具有上述角色的用户,并为他们提供不同角色的优势。
gremlin - 用 project() 和 select() 在 Gremlin 中总结路径信息
我正在尝试编写一个 Gremlin 查询,该查询将遍历多个顶点并返回叶子以及有关到达那里所遵循的路径的一些信息。
用一个例子来解释是最简单的:
以下遍历从顶点 1 开始并out()
尽可能继续,使用 . 收集“显着”顶点as()
。
我想看到的是每个叶子的 ID 及其“显着”祖先的 ID 数组:
但是,NotableAncestors
我得到的不是数组,而是第一个值,因为unfold()
将数组展平为其中的第一项,如下所示。或者,如果我省略unfold()
,我会得到一个数组,但它总是空的。
javascript - 如何在 javascript/typescript 中使用新的 Gremlin 3.x 语法编写旧查询
我需要在 JS/TS 中编写从 Gremlin 2.6 到 3.4 语法的旧查询,因为在 2.6 中我已经用字符串完成了所有操作,然后我执行了该字符串,但现在我想在可以使用链接方法的地方使用 3.4 语法。
首先我需要转换这个查询,但我不知道如何处理这个嵌套查询out().simplePath()
和label().is('Recording')
.
我正在考虑这样做,但我不确定这是正确的。
gremlin 中的函数之间也没有更多了,所以我怎样才能为这个旧函数获得相同的结果,并在 js/ts 中编写它?(这只是查询的一部分)
谢谢前面的各位。
c# - 如何从顶点获得独占子图?
我最近不得不从使用 Cypher 更改为 Gremlin,并且我正在尝试转换一个允许用户“删除”一个节点和所有受此影响的子图节点的查询。它实际上并没有删除节点,而只是在受影响的节点上添加了一个“已删除”标签。
我可以使用以下方法在 Gremlin 中获取子图:
但这并没有考虑到子图中的任何节点,这些节点可能具有返回原始“已删除”节点的路径,因此不应成为孤立节点。
如果你看上面的图表;B 是被删除的节点。它的子图将包括 D、E、G 和 H。但是,由于 E 仍然有一条通过 C 回到 A 的路线,我们不想“删除”它。D、G 和 H 将没有返回 A 的路线,因此也应删除。
我的 Cypher 查询是这样工作的(在 C# 中使用 Neo4jClient.Cypher):
有什么办法可以在 Gremlin 中获得类似的功能?
更新
感谢 sel-fish 在这个问题和这个问题中的帮助,我现在可以使用:
python - 是否可以从 python 中的字节码生成 gremlin 查询
是否可以从字节码生成 gremlin 脚本?
我正在开发一个 POC,我需要在其中通过 Gremlin API 查询图形 Azure CosmosDB 数据库。
目前,Azure CosmosDB 不支持字节码。Azure 开发团队已经开始着手这方面的工作,但到目前为止还没有发布发布时间表。
当字节码支持普遍可用时,我想准备将来需要最少重构的工作代码。
根据Apache TinkerPop 文档,提交 Gremlin 查询有两种方式:字节码和脚本
“字节码方式”在我看来效率更高(语法检查、IDE 智能感知等),而且我对创建DSL(域特定语言)很感兴趣。
是否可以使用 fluent api 并将其序列化为字符串,方式类似于:
我正在使用 python 3.5 和 gremlinpython 3.4.0
azure-cosmosdb - Cosmos DB 连接策略
Cosmos DB 支持可以提供多宿主和自动重试的 ConnectionPolicy。在查看文档和 Gremlin.NET 代码时,我看不到任何用于在 GremlinServer 或 GremlinClient 上设置连接策略的选项。
多宿主和重试策略是否可以与 Cosmos Graph API 一起使用?
如果没有,是否有人创建了实现多宿主的解决方案?我已经实现了自动重试实现,并且正在考虑实现自动故障转移实现。