代码之家  ›  专栏  ›  技术社区  ›  Elias Strehle

AQL-在ArangoDB中查找具有非唯一属性的文档

  •  3
  • Elias Strehle  · 技术社区  · 8 年前

    假设我有以下文件:

    {"_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语句,返回按名称分组的文档的键,

    [["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"])
    

    这将返回:

    [["1", "2", "5"], ["3"], ["4", "6"]]
    

    如何修改AQL命令以仅获取具有两个或多个条目的数组?

    2 回复  |  直到 8 年前
        1
  •  1
  •   stj    8 年前

    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
    
        2
  •  0
  •   Elias Strehle    8 年前

    解决了它:

    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
    
    推荐文章