c# - 从 c# 中的 cosmos db 获取给定查询字符串的数据

标签 c# azure-cosmosdb

我有以下函数来获取整个文档:

public async Task<IEnumerable<dynamic>> GetAllPreferences(string queryString)
        {
            IDocumentQuery<dynamic> query = documentClient.CreateDocumentQuery<dynamic>(
                UriFactory.CreateDocumentCollectionUri(collectionInfo.DatabaseName, collectionInfo.CollectionName))
                .AsDocumentQuery();

            List<dynamic> results = new List<dynamic>();
            while (query.HasMoreResults)
            {
                results.AddRange(await query.ExecuteNextAsync<dynamic>());
            }

            return results;
        }

但是在这里我无法使用queryString。 我的文档结构如下:

{
    "type": [
        "university",
        "institute"
    ],
    "preferences": [
        {
            "type": "university",
            "universityDetail": [
                .....
            ],
            "state" : [
                ....
            ]
        },
        {
            "type": "institute",
            "instituteDetail": [
                .....
            ],
            "state" : [
                ....
            ]
        }
    ]
}

我只能从每个文档中获取首选项。等效的 SQL 查询是“从collectionInfo.CollectionName中选择首选项”。

请建议代码编辑,并帮助我获得我的案例所需的确切查询字符串。

提前非常感谢。

最佳答案

您可以使用 SDK 尝试此代码:

public async Task<IEnumerable<dynamic>> GetAllPreferences(string queryString)
        {
            SqlQuerySpec queryStr = new SqlQuerySpec(queryString); //"select c.preferences from c"
            FeedOptions feedOptions = new FeedOptions();
            feedOptions.EnableCrossPartitionQuery = true;

            IDocumentQuery<dynamic> query = documentClient.CreateDocumentQuery(UriFactory.CreateDocumentCollectionUri(collectionInfo.DatabaseName, collectionInfo.CollectionName), queryString, feedOptions).AsDocumentQuery();

            List<dynamic> results = new List<dynamic>();
            while (query.HasMoreResults)
            {
                results.AddRange(await query.ExecuteNextAsync<dynamic>());
            }

            return results;
        }

关于c# - 从 c# 中的 cosmos db 获取给定查询字符串的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67598286/

相关文章:

c# - 来自字节数组切片的字符串

azure-cosmosdb - session 一致性和 .NET 客户端 SDK

azure - CosmosDB - 返回包含许多记录的列表中每个项目的前 1 个列表

c# - 无法使用 autofac 解决通用存储库的依赖关系

c# - 显示表单后执行操作。

azure-cosmosdb - 如何访问 Azure Cosmos DB 模拟器中的更改源

python - 尝试使用 python 连接到 azure cosmos 客户端,出现 104 连接中止错误

Azure CosmosDB 调试存储过程 : making log readable

java - 对象递归调用彼此方法的示例

c# - 使用类型作为参数