如何将另一个集合中的数据合并到一组键或 ID?

问题描述

这是我面临的问题:

我正在使用 arangob 3.7 和 arangojs 驱动程序。

我有以下收藏:

collection A {    _key,data }

collection B {    _key,aDataList[A._key] }

我已经尝试了以下

 FOR bdoc IN B  
 FILTER bdoc._key == "some_key" 
 FOR adoc IN A 
 FILTER adoc._key IN bdoc.aDataList[*]  
 RETURN MERGE(bdoc,adoc)

查询返回符合指定条件的对象。

但我面临的问题是 bdoc.aDataList[] 顺序与实际 B 文档集合中的顺序不同。 让我们说这是示例列表:

bdoc.aDataList[    1,2,3 ]

需要如何更新?

bdoc.aDataList[
   {
     "_key" : 1,"data"  : "somedata"
   },{
     "_key" : 2,{
     "_key" : 3,"data"  : "somedata"
   }
]

如何使用单个 aql 查询将 aDataList[A.Key] 正确替换为 aDataList[A] 值?

任何帮助将不胜感激

解决方法

我找到了答案:)

FOR bDoc IN B 
FILTER bDoc.key == “somekey” 
LET finalData = ( FOR bDocItem IN bDoc.aDataList
FOR aDoc IN A
FILTER bDocItem[“_key”] == aDoc._key 
RETURN aDoc)
RETURN { "_key" : bDoc.key,aDataList: finalData }

我没有遍历 A 的键,而是遍历数组。因此顺序被保留

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...