【问题标题】:Cosmos query to get the items inside listCosmos 查询以获取列表中的项目
【发布时间】:2021-11-03 19:03:26
【问题描述】:

我有这样的数据结构:

{
  "commonId":"123",
  "Answers": [
    {
        "QuestionType": "1",
        "Answer": [
            "answer1"
        ]
    },
    {
        "QuestionType": "1",
        "Answer": [
            "answer2"
        ]
    },
    {
        "QuestionType": "2",
        "Answer": [
            "answer14"
        ]
    }
]
}

另一个文件

 {
  "commonId":"123",
  "Answers": [
    {
        "QuestionType": "1",
        "Answer": [
            "answer3."
        ]
    },
    {
        "QuestionType": "1",
        "Answer": [
            "answer4."
        ]
    },
    {
        "QuestionType": "3",
        "Answer": [
            "answer24."
        ]
    }
]
}

在这里,我只想将具有 commonId:123 的 QuestionType=1 的答案提取到字符串列表中。我尝试了下面的代码,但它不起作用

string sqlQueryText = "SELECT c.Answers.Answer FROM c WHERE c.commonId=123 AND c.Answers.QuestionType=1";
QueryDefinition queryDefinition = new QueryDefinition(sqlQueryText);
FeedIterator<List<string>> queryResultSetIterator = cosmosContainer.GetItemQueryIterator<List<string>>(queryDefinition);
FeedResponse<List<string>> currentResultSet = await queryResultSetIterator.ReadNextAsync();

我是这个 azure-cosmosdb 的新手,目前我正在获取所有问题类型的所有答案,并使用 linq 我正在过滤特定的问题答案。

【问题讨论】:

    标签: azure linq-to-entities azure-cosmosdb azure-cosmosdb-sqlapi


    【解决方案1】:

    您将需要使用联接。 您的查询将如下所示。

    SELECT t.Answer
    FROM c
    JOIN t IN c.Answers
    WHERE t.QuestionType = "1" AND c.commonId = 123
    

    回复如下。

    [
        {
            "Answer": [
                "answer1."
            ]
        },
        {
            "Answer": [
                "answer2."
            ]
        },
        {
            "Answer": [
                "answer3."
            ]
        },
        {
            "Answer": [
                "answer4."
            ]
        }
    ]
    

    您可以查看这篇关于在 Cosmos LINK 中迭代数组的非常好的博客。

    【讨论】:

    • 我在“答案”中得到空值
    • 您的文件是否正确? “answer25”后面多了一个逗号。和“答案 15”。并且 commonId 没有引号。我假设您实际上有用于查询的文档。你能用正确的文件更新问题吗?
    • 我更新了问题,但我无法在这里上传我的实际数据,这就是为什么只是改变了文本,结构是一样的。
    • commonId 的值是多少?是数字 123 还是字符串 "123" ?这2个是不同的。如果它是数字查询将有 c.commonId = 123 否则它将是 c.commonId = "123"。
    • 但是您的文档中有什么?是 "commonId":"123" 还是 "commonId":123 ?在您的问题中,您提到了 commonId:"123" 这不是有效的 JSON 属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 2011-11-26
    相关资源
    最近更新 更多