我确定我错过了一些显而易见的事情。项目列表始终为空
.Net Core 2.1 Web应用程序
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个)。 该代码无一例外,因此我的数据库/集合名称正确,而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);
}
我想念什么?
答案 0 :(得分:1)
根据我的经验,您可能在此处设置了错误的分区键值。
PartitionKey = new PartitionKey("/clientId")
需要将分区键设置为字段值,而不是字段名称。
例如,我的文档如下:
{
"id": "1",
"name": "jay"
}
{
"id": "2",
"name": "jay2"
}
我的partitionkey
是“名字” ,所以这里有两个分区:'jay'和'jay1'。
您应该将partitionkey
属性设置为'jay'或'jay2',而不是'name'。