我正在使用Azure Cosmos文档数据库,并希望在一次调用中获取多个文档。
我了解如果您拥有其ID,检索文档的最佳方法是使用DocumentClient.ReadDocumentAsync(...)
我想知道是否有类似的方法来获取多个文档?现在我正在做DocumentClient.CreateDocumentQuery<T>(...).Where(document => ids.Contains(document.id))
有没有人知道这是否是首选方式,还是有另一种方式?
答案 0 :(得分:3)
使用CreateDocumentQuery的第二种方法效果很好。如果您正在使用分区集合,并查询跨分区,并且具有唯一的每文档分区键和ID,我观察到更好的性能限制分区键而不是id,即使两者都是唯一的。如果你的id也是你的分区键,那么这应该没有特别的努力。
如果要检索许多文档,则需要将ids集合分成批处理,以避免生成的SQL表达式的长度限制(长IN语句)。我在当前项目中使用500批次,但这取决于您的ID的长度。您可以并行发出多个批次。