ArangoDB:过滤掉集合查询中的文档属性

时间:2015-11-18 17:12:43

标签: attributes arangodb aql

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

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

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

{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}

我想返回所有属性,但是'' 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}

最有效的方法是什么?

1 个答案:

答案 0 :(得分:4)

您可以使用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 
  } 
]