2015-11-18 79 views
0

我有一個包含許多不同類型的文檔(具有不同的屬性集合)的ArangoDB集合。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} 

是什麼最有效的方法來做到這一點?

回答

4

您可以使用UNSET AQL函數來執行此操作。 以下AQL查詢返回集合中的所有文檔,但是對於每個文檔取消提及的屬性b,cd

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