如何使用 Cosmos DB 中的 IQueryable 按多列排序?

How can I order by multiple columns using the IQueryable in Cosmos DB?

如何使用 Cosmos DB 中的 IQueryable 按多列排序?

我尝试执行以下操作:

books.OrderBy(book => book.Author).ThenBy(book => book.Name);

它适用于 Cosmos DB 模拟器,但不适用于真实数据库。为什么?

这是我收到的错误:

The order by query does not have a corresponding composite index that it can be served from.

这不是您的 C# 代码的问题。如果你想在 属性 上使用 ORDER BY,那么 属性 需要被索引。对于多个列,它是相同的,尽管您需要以完全相同的顺序出现在 ORDER BY 子句中的所有属性的复合索引。

对于您的用例,您需要将以下索引添加到您的 Cosmos DB 容器中:

"compositeIndexes": [
    [
        {
            "path": "/Author",
            "order": "ascending"
        },
        {
            "path": "/Name",
            "order": "ascending"
        }
    ]
]