问题描述
这是我面临的问题:
我正在使用 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 的键,而是遍历数组。因此顺序被保留