Cosmos DB 中的动态属性
Dynamic Properties in Cosmos DB
我在 SO 上经历了很多 post。找不到我需要的东西。
我有一个收款文件,如下所示
[
{
"Key1": "Value",
"Key2": 1,
"Key3": "Value",
"Key4": 5,
"Date": "2021-10-25T04:20:00",
"Key5": {
"a3": "2021-09-03T09:32:55",
"a199": "2021-09-03T09:32:55"
}
},
{
"Key1": "Value",
"Key2": 1,
"Key3": "Value",
"Key4": 5,
"Date": "2021-10-25T04:20:00",
"Key5": {
"a500": "2021-09-03T09:32:55",
"a39": "2021-09-03T09:32:55"
}
}
]
我正在使用这个查询
Select top 10 * from Collection c where c.Key5.a3 = '2021-09-03T09:32:55'
现在我需要从这个集合中筛选出 Key5.a3 或 Key5.a199 等于某物的数据。这里的问题是我不知道 Key5 下会出现哪些属性,这些属性是由系统从 UI 随机创建的,并且每个文档在 Key5 中都有不同的属性。
我需要为这个集合构建一个查询,它不关心 Key5。a199/399/500 或任何东西,只比较与之关联的值。
您不能有忽略特定 属性 名称的动态查询。
您遇到的问题是通过将数据值存储为 属性 名称(包括 Key1
到 Key4
以及更复杂的 Key5
。具体来说:
"Key5": {
"a500": "2021-09-03T09:32:55",
"a39": "2021-09-03T09:32:55"
}
您已将元数据嵌入到您的 属性 名称中,这是尝试编制索引或搜索时的问题。
为避免这种情况,请重构您的数据模型以具有一致的 属性 名称。像这样,你有定义明确的键值对。然后,您可以在一个数组中拥有多个值。像这样:
{
"Key5": [
{ "property_key": "a500", "property_value": "2021-09-03T09:32:55" },
{ "property_key": "a39", "property_value" : "2021-09-03T09:32:55" }
]
}
此时,您将拥有一组一致的 属性 名称供查询。
您需要根据自己的需要定制它,但这展示了如何避免在 属性 名称中存储真实数据的问题。
我在 SO 上经历了很多 post。找不到我需要的东西。
我有一个收款文件,如下所示
[
{
"Key1": "Value",
"Key2": 1,
"Key3": "Value",
"Key4": 5,
"Date": "2021-10-25T04:20:00",
"Key5": {
"a3": "2021-09-03T09:32:55",
"a199": "2021-09-03T09:32:55"
}
},
{
"Key1": "Value",
"Key2": 1,
"Key3": "Value",
"Key4": 5,
"Date": "2021-10-25T04:20:00",
"Key5": {
"a500": "2021-09-03T09:32:55",
"a39": "2021-09-03T09:32:55"
}
}
]
我正在使用这个查询
Select top 10 * from Collection c where c.Key5.a3 = '2021-09-03T09:32:55'
现在我需要从这个集合中筛选出 Key5.a3 或 Key5.a199 等于某物的数据。这里的问题是我不知道 Key5 下会出现哪些属性,这些属性是由系统从 UI 随机创建的,并且每个文档在 Key5 中都有不同的属性。
我需要为这个集合构建一个查询,它不关心 Key5。a199/399/500 或任何东西,只比较与之关联的值。
您不能有忽略特定 属性 名称的动态查询。
您遇到的问题是通过将数据值存储为 属性 名称(包括 Key1
到 Key4
以及更复杂的 Key5
。具体来说:
"Key5": {
"a500": "2021-09-03T09:32:55",
"a39": "2021-09-03T09:32:55"
}
您已将元数据嵌入到您的 属性 名称中,这是尝试编制索引或搜索时的问题。
为避免这种情况,请重构您的数据模型以具有一致的 属性 名称。像这样,你有定义明确的键值对。然后,您可以在一个数组中拥有多个值。像这样:
{
"Key5": [
{ "property_key": "a500", "property_value": "2021-09-03T09:32:55" },
{ "property_key": "a39", "property_value" : "2021-09-03T09:32:55" }
]
}
此时,您将拥有一组一致的 属性 名称供查询。
您需要根据自己的需要定制它,但这展示了如何避免在 属性 名称中存储真实数据的问题。