如何在 DocumentDb 中获取两个文档数组的用户定义属性
how to fetch two document array's user defined properties in DocumentDb
我的第一个文档包含以下属性
{
"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、附件和所有)。
为了获取用户定义的数据,我使用了以下查询。
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
但结果是 returns 空数组。我如何更改查询以获得所需的结果?
我认为您误解了 JOIN
操作。在 Cosmos DB 中,它用于文档内连接,例如将文档属性中的数据组合到同一文档中子数组的字段中。您不能使用 join 合并两个文档。
最简单的方法就是一直查询所有字段,然后在代码中合并非空字段。
如果你真的需要在数据库中以这种方式合并两个文档,你可以编写一个用户定义的函数,它会通过 ID 查询两个文档,然后将它们合并。
我的第一个文档包含以下属性
{
"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、附件和所有)。
为了获取用户定义的数据,我使用了以下查询。
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
但结果是 returns 空数组。我如何更改查询以获得所需的结果?
我认为您误解了 JOIN
操作。在 Cosmos DB 中,它用于文档内连接,例如将文档属性中的数据组合到同一文档中子数组的字段中。您不能使用 join 合并两个文档。
最简单的方法就是一直查询所有字段,然后在代码中合并非空字段。
如果你真的需要在数据库中以这种方式合并两个文档,你可以编写一个用户定义的函数,它会通过 ID 查询两个文档,然后将它们合并。