首页 > 解决方案 > Azure Cosmos DB 查询

问题描述

我需要通过用户 ID 进行查询,但我认为这段时间与我的查询有关。我尝试了以下 3 个查询。括号和引号给我一个错误,第一个不产生错误但没有结果。

SELECT * FROM c WHERE c.document.BotAccessors.BotState.Profile.UserId = "5351ec9f-46fb-449a-b6f5-1ea07e683015"
SELECT * FROM c WHERE c.document.[BotAccessors.BotState].Profile.UserId = "5351ec9f-46fb-449a-b6f5-1ea07e683015"
SELECT * FROM c WHERE c.document."BotAccessors.BotState".Profile.UserId = "5351ec9f-46fb-449a-b6f5-1ea07e683015"

{
    "document": {
        "BotAccessors.BotState": {
            "Version": 4,
            "ConversationState": 0,
            "FirstMessageDateTime": "2020-03-04T13:19:20.7657389Z",
            "FirstMessage": null,
            "LastSeenDateTimeTicks": 637189282249482900,           
            "Profile": {
                "UserId": "5351ec9f-46fb-449a-b6f5-1ea07e683015",
            }
        }
    },
    "_etag": "\"0300fbab-0000-0700-0000-5e5fb85e0000\"",
    "_rid": "4zYrANO8oXoBAAAAAAAAAA==",
    "_self": "dbs/4zYrAA==/colls/4zYrANO8oXo=/docs/4zYrANO8oXoBAAAAAAAAAA==/",
    "_attachments": "attachments/",
    "_ts": 1583331422
}

标签: azure-cosmosdb

解决方案


对于非 a-zA-Z0-9 字符的属性名称,您需要使用带引号的方括号。这是一个例子:

SELECT * FROM c WHERE c["document"]["BotAccessors.BotState"]["Profile"]["UserId"] = "5351ec9f-46fb-449a-b6f5-1ea07e683015"

推荐阅读