1

这是我面临的问题:

我正在使用 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,
     "data"  : "somedata"
   },
   {
     "_key" : 3,
     "data"  : "somedata"
   }
]

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

任何帮助,将不胜感激

4

1 回答 1

2

我找到了答案:)

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 的键,而是遍历数组。因此秩序得以保留

于 2021-02-17T10:07:31.040 回答