Azure Cosmos 文档 DB - 按 id 读取多个文档

Ori*_*ter 5 c# azure-cosmosdb

我正在使用 Azure Cosmos Document DB 并希望在一次调用中获取多个文档。

我明白,如果您有文档的 id,检索文档的最佳方法是使用 DocumentClient.ReadDocumentAsync(...)

我想知道是否有类似的方法来获取多个文档?现在我正在做一个DocumentClient.CreateDocumentQuery<T>(...).Where(document => ids.Contains(document.id))

有谁知道这是执行此操作的首选方法还是有其他方法?

Jas*_*son 8

您使用 CreateDocumentQuery 的第二种方法效果很好。如果您正在使用分区集合并查询跨分区,并且具有唯一的每个文档分区键和一个 id,我已经观察到更好的性能约束对分区键而不是 id 的约束,即使两者都是唯一的。如果您的 id 也是您的分区键,那么这应该无需特别努力即可工作。

如果要检索许多文档,则需要将 ids 集合分成批次以避免生成的 SQL 表达式(长 IN 语句)的长度限制。我在当前项目中使用 500 个批次,但这取决于您的 id 的长度。您可以并行发布多个批次。