【问题标题】:ArangoDB: filter out document attributes in a collection queryArangoDB:在集合查询中过滤掉文档属性
【发布时间】:2015-11-18 17:12:43
【问题描述】:

我有一个 ArangoDB 集合,其中包含许多不同类型的文档(即具有不同属性集)。

我想做一个选择查询并过滤掉一些属性,即返回所选文档的几个预定义属性之外的所有属性。

例如,如果这是选定的子集:

{a:1, b:2, c:3, d:4, e:5, h:8}
{a:21, b:22, c:23, d:4, w:5, p:81}
{a:31, b:22, c:63, f:4, e:5, u:82}
{a:41, b:32, c:53, g:4, h:5, l:83}
{a:51, b:42, c:53, h:4, j:5, n:84}
{a:61, b:52, c:33, i:4, u:5, m:85}

我想返回除“b”、“c”、“d”之外的所有属性:

{a:1,  e:5, h:8},
{a:21,  w:5, p:81}
{a:31,  f:4, e:5, u:82}
{a:41,  g:4, h:5, l:83}
{a:51,  h:4, j:5, n:84}
{a:61,  i:4, u:5, m:85}

最有效的方法是什么?

【问题讨论】:

    标签: attributes arangodb aql


    【解决方案1】:

    您可以使用UNSET AQL 函数来执行此操作。 以下 AQL 查询返回集合中的所有文档,但对于每个文档都取消设置提到的属性 bcd

    FOR doc IN collection 
      RETURN UNSET(doc, ['b', 'c', 'd' ])
    

    上述数据集的查询结果将是(注意,为了简洁,这里我还排除了属性_id_key_rev):

    [ 
      { 
        "a" : 41, 
        "h" : 5, 
        "g" : 4, 
        "l" : 83 
      }, 
      { 
        "a" : 31, 
        "e" : 5, 
        "f" : 4, 
        "u" : 82 
      }, 
      { 
        "a" : 61, 
        "u" : 5, 
        "i" : 4, 
        "m" : 85 
      }, 
      { 
        "a" : 1, 
        "e" : 5, 
        "h" : 8 
      }, 
      { 
        "a" : 51, 
        "h" : 4, 
        "j" : 5, 
        "n" : 84 
      }, 
      { 
        "a" : 21, 
        "w" : 5, 
        "p" : 81 
      } 
    ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-29
      相关资源
      最近更新 更多