AQL - 在 ArangoDB 中查找具有非唯一属性的文档
AQL - Find documents with nonunique attributes in ArangoDB
假设我有以下文件:
{"_key": "1", "name": "George Washington"}
{"_key": "2", "name": "George Washington"}
{"_key": "3", "name": "John Adams"}
{"_key": "4", "name": "Thomas Jefferson"}
{"_key": "5", "name": "George Washington"}
{"_key": "6", "name": "Thomas Jefferson"}
我想编写一个 AQL 语句,returns 文档的键按名称分组,但前提是该名称出现不止一次。
所以我想要的输出是:
[["1", "2", "5"], ["4", "6"]]
到目前为止我想出了
FOR doc IN documents
LET key = doc._key
COLLECT name = doc.name INTO groups KEEP key
RETURN (FOR g IN groups RETURN g["key"])
这个returns:
[["1", "2", "5"], ["3"], ["4", "6"]]
如何修改 AQL 命令以仅获取包含两个或更多条目的数组?
已解决:
FOR doc IN documents
LET key = doc._key
COLLECT name = doc.name INTO groups KEEP key
LET groups2 = (FOR group IN groups RETURN group["key"])
FILTER LENGTH(groups2) >= 2
RETURN groups2
另一种可能性(由于不涉及子查询,可能更有效):
FOR doc IN documents
LET key = doc._key
COLLECT name = doc.name INTO groups KEEP key
LET keys = groups[*].key
FILTER LENGTH(keys) > 1
RETURN keys
假设我有以下文件:
{"_key": "1", "name": "George Washington"}
{"_key": "2", "name": "George Washington"}
{"_key": "3", "name": "John Adams"}
{"_key": "4", "name": "Thomas Jefferson"}
{"_key": "5", "name": "George Washington"}
{"_key": "6", "name": "Thomas Jefferson"}
我想编写一个 AQL 语句,returns 文档的键按名称分组,但前提是该名称出现不止一次。
所以我想要的输出是:
[["1", "2", "5"], ["4", "6"]]
到目前为止我想出了
FOR doc IN documents
LET key = doc._key
COLLECT name = doc.name INTO groups KEEP key
RETURN (FOR g IN groups RETURN g["key"])
这个returns:
[["1", "2", "5"], ["3"], ["4", "6"]]
如何修改 AQL 命令以仅获取包含两个或更多条目的数组?
已解决:
FOR doc IN documents
LET key = doc._key
COLLECT name = doc.name INTO groups KEEP key
LET groups2 = (FOR group IN groups RETURN group["key"])
FILTER LENGTH(groups2) >= 2
RETURN groups2
另一种可能性(由于不涉及子查询,可能更有效):
FOR doc IN documents
LET key = doc._key
COLLECT name = doc.name INTO groups KEEP key
LET keys = groups[*].key
FILTER LENGTH(keys) > 1
RETURN keys