我很感兴趣的是,是否可以比较两个存储在不同数据库中的具有相同“_id“(相同的集合名称和“_keys”)的文档。
我的用例是一个自定义的“Map/布局引擎”,它“主要”由来自外部地理数据系统的“自动导入/转换作业”提供。
到目前为止,效果很好。
但是在某些情况下,需要手动调整某些对象的“x/y”坐标,以使它们更有用。通过再次运行导入作业,所有手动调整都会丢失,因为它们只是被“自动”数据覆盖。
因此,我想到了一个由几个结构相同的ArangoDB数据库组成的系统设置,用于数据生命周期的不同“阶段”,如:
- “staging”-新“自动导入”的数据放置在此处。
- “生产”-向用户显示的“最终数据”,包括所有最新的手动调整,都存储在此处。
相应的(简化的)生命周期如下:
1.自动导入到“暂存”
1.比较并将所有手动调整从“生产”导入“暂存”
1.将1.和2.中的“合并”内容部署为新的“生产”版本。
因此,本主题主要介绍步骤2中“生产”和“暂存”数据值之间的“比较阶段”。
在SQL中,我会这样表达:
SELECT
x, y
FROM databaseA.layout AS layoutA
JOIN databaseB.layout ON (layoutA.id = layoutB.id) AS layoutB
WHERE
...
感谢您关于如何在ArangoDB中使用AQL查询或FOXX服务解决此问题的任何提示!
1条答案
按热度按时间gzszwxb41#
假设您手边有一个版本控制图形数据库,您可以执行以下操作:
1.在第一次导入时,插入新数据,为每个插入的节点创建新的修订版本
R0
。1.手动更改节点的某些字段,例如此数据中的
N
,从而生成N
的新修订版本,例如R1
。但您的先前版本R0
不会丢失。1.重复步骤1和2,次数不限。
最后,当您需要向最终用户显示此数据时,请使用自定义应用程序逻辑将任意多个以前的版本与当前版本合并,执行
n-way
合并而不是2-way
合并。如果您认为这可能是一个潜在的解决方案,那么可以看看CivicGraph,它是构建在ArangoDB之上的版本控制层。
**注:**我是CivicGraph的创建者,这个答案可以作为产品的促销,但我也相信它可以帮助解决您的问题。