如何在DocumentDb中获取两个文档数组的用户定义属性

时间:2017-06-02 10:05:18

标签: azure-cosmosdb

我的第一份文件包含以下属性

{  
  "id":"123456789",
  "sensordata1":[  
     {  
        "Time":"8:16:19",
        "Temperature":27.9,
        "Humidity":96.5,
        "Voltage":0.03,
        "Current":0.5
     }]

我的第二份文件包含以下属性

{  
    "id":"987654321",
    "sensordata2":
    {  
        "Time":"8:17:14",
        "Temperature":31.7,
        "Humidity":81.2,
        "Voltage":1.44,
        "Current":0.25
     }]    

我想要两个文档用户定义的属性,但不想要系统定义的属性(如etags,attachment和all)。

对于获取用户定义数据,我使用了以下查询。

select e.Time,
       e.Temperature,
       e.Humidity,
       e.Voltage,
       e.Current,
       g.Time,
       g.Temperature,
       g.Humidity,
       g.Voltage 
from Items f 
     join e in f.sensordata1 join g in s.sensordata2 

但它返回空数组作为结果。如何更改查询以获得所需结果?

1 个答案:

答案 0 :(得分:0)

我认为你误解了JOIN操作。在Cosmos DB中,它用于文档内连接,例如,将文档属性中的数据组合到同一文档中的子数组字段。您无法使用联接来合并两个文档。

最简单的方法就是始终查询所有字段,然后在代码中组合非空字段。

如果你真的需要在数据库中以这种方式组合两个文档,你可以编写一个用户定义的函数,它将通过ID查询两个文档,然后将它们组合起来。