Cosmos DB C# sql 未返回结果

CosmosDB C# sql not retunring results

我确定我错过了一些明显的东西。项目列表始终为空

.Net Core 2.1 网络应用程序

Microsoft.Azure.DocumentDB.Core 2.2.1

                var opts = new FeedOptions()
            {
                PartitionKey = new PartitionKey("/clientId"),  
                EnableCrossPartitionQuery = true,
                EnableScanInQuery = true,                       
            };
            string sql = "SELECT * FROM c "; 
            var items = client.CreateDocumentQuery(collectionLink: collectionLink.ToString(), sqlExpression: sql, feedOptions: opts).ToList();

            if (!items.Any())
            {

使用门户中的 where 子句,它按预期工作。 在门户中,我已验证集合中有文档(目前有 5 个)。 代码无一例外,所以我的database/collection名字是正确的,collectionLink也是如此。

所以我尝试了一个不同的集合,其中包含我在同一个数据库中拥有的 1000 多个文档——同样的事情,没有返回结果。

                var sql = "SELECT top 10 * FROM c";
            IQueryable<dynamic> query = client.CreateDocumentQuery<string>(collectionLink, new SqlQuerySpec(sql), opts);

            foreach (string alias in query)
            {
                Console.WriteLine(alias);
            }

我错过了什么?

根据我的经验,您可能在此处设置了不正确的分区键值。

PartitionKey = new PartitionKey("/clientId")

分区键需要设置为字段值,而不是字段名。

例如我的文档如下:

{
    "id": "1",
    "name": "jay"
}

{
    "id": "2",
    "name": "jay2"
}

我的partitionkey'name',所以这里我有两个分区:'jay''jay1'.

您应该将 partitionkey 属性 设置为 'jay' 或 'jay2',而不是 'name'。