2017-07-17 90 views
0

从嵌入式阵列单场我有一个documentDB集合看起来像这样的例子:选择在蔚蓝documentDB

{ 
    "data1": "hello", 
    "data2": [ 
     { 
      "key": "key1", 
      "value": "value1" 
     }, 
     { 
      "key": "key2", 
      "value": "value2" 
     } 
} 

在现实中,数据有很多其他领域和嵌入式阵列有一些领域,其中数据是相当大的。我需要查询数据,我关心data2数组中的小“键”字段,但我不需要大的“值”。我发现返回所有值数据都会导致性能问题,但如果我将数组中的数据从SELECT中排除在一起,则速度很快(因此数据量是问题)。

我找不出一种方法来只返回“键”,但排除嵌入数组中的“值”。

我基本上要SELECT r.data1, r.data2.key,并把它作为返回:

{ 
    "data1": "hello", 
    "data2": [ 
     { 
      "key": "key1" 
     }, 
     { 
      "key": "key2" 
     } 
} 

,但它似乎并不可能选择r.data2.key,因为它是一个数组

联接将导致它返回一个每个“data2”数组元素的每个文档的副本,这对我不起作用。我唯一的选择是迁移数据并将我想要的数据放入它自己的数组中,这样我就可以选择整个对象。

这是可能的一些如何,我一直无法弄清楚?

回答

1

麦克,

正如你已经猜到,这也不是没有可能的自定义UDF直到DocumentDB支持子查询。如果你想往下走这条路线,请参阅下面的答案如何为例UDF可以来看看:

祝你好运!