加入不同的列

时间:2016-02-23 07:44:33

标签: json azure-cosmosdb

我正在尝试让JOIN正确处理Azure DocumentDB数据库中的数据。

我有一堆代表购买的文件,例如

{
  "Timestamp": "2016-02-22T15:05:09.9863478+01:00",
  "MessageTemplate": "Processed {@Purchases}",
  "Level": 2,
  "Exception": null,
  "RenderedMessage": "Processed { Name: \"FunnyBibs\", Quantity: 112, PurchasedAt: \"Store2\" }",
  "Properties": {
    "Purchases": {
      "Name": "FunnyBibs",
      "Quantity": 112,
      "PurchasedAt": "Store2"
    }
  },
  "id": "2d919bbc-2763-47ea-9cc0-ee41cd6adb96"
}

{
  "Timestamp": "2016-02-22T15:05:09.8462592+01:00",
  "MessageTemplate": "Processed {@Purchases}",
  "Level": 2,
  "Exception": null,
  "RenderedMessage": "Processed { Name: \"Hats\", Quantity: 11, PurchasedAt: \"Store1\" }",
  "Properties": {
    "Purchases": {
      "Name": "Hats",
      "Quantity": 11,
      "PurchasedAt": "Store1"
    }
  },
  "id": "d6a5244b-92ef-4785-a065-dc45790f87b4"
}

{
  "Timestamp": "2016-02-22T15:05:09.6886969+01:00",
  "MessageTemplate": "Processed {@Purchases}",
  "Level": 2,
  "Exception": null,
  "RenderedMessage": "Processed { Name: \"Drinks\", Quantity: 4, Store: \"Store1\" }",
  "Properties": {
    "Purchases": {
      "Name": "Drinks",
      "Quantity": 4,
      "Store": "Store1"
    }
  },
  "id": "ed1ee4e4-862e-412e-9f37-05a5925c4c09"
}

有些文件指定了“已购买的”属性,而其他文件则指定了“商店”属性。

我想通过加入“Store”-property和“PurchasedAt”-property上的文件来提取名称,数量和购买商品的商店,这样我就能感受到同时购买了多少商品的地方。

所以我写了这个JOIN语句 - 但我无法弄清楚如何获得任何数据作为回报。

SELECT soldAt.PurchasedAt, item.Properties.Purchases.Quantity
FROM item
JOIN soldAt IN item.Properties.Purchases.PurchasedAt
WHERE item.Store = soldAt.PurchasedAt

那么我做错了什么?我意识到JOIN语法看​​起来很像T-SQL,但微妙的差异仍让我感到困惑: - |

1 个答案:

答案 0 :(得分:1)

DocumentDB不支持文档间连接,只支持文档内(自身)连接以格式化输出。为了实现您的目标,您可以使用PurchasedAt获取和聚合,然后返回以获取更多商店详细信息 - 两个查询基本上完成了连接。