我正在使用Azure Cosmos文档数据库,并希望在一次调用中获取多个文档。
我了解,如果您有文档ID,最好的检索方法是使用DocumentClient.ReadDocumentAsync(...)
我想知道是否有类似的方式来获取多个文档?现在我正在做一个DocumentClient.CreateDocumentQuery<T>(...).Where(document => ids.Contains(document.id))
有人知道这是执行此操作的首选方法还是其他方法?
最佳答案
使用CreateDocumentQuery的第二种方法效果很好。如果您使用分区集合并查询跨分区,并且具有唯一的按文档分区键和ID,那么即使这两个键都是唯一的,我也观察到了对分区键而不是ID的更好的性能约束。如果您的ID也是您的分区键,则应该毫不费力地工作。
如果要检索许多文档,则需要将id集合分成批处理,以避免所生成的SQL表达式(长IN语句)的长度限制。我在当前项目中使用了500个批次,但这取决于您ID的长度。您可以并行发出多个批次。
关于c# - Azure Cosmos文档数据库-按ID读取多个文档,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49303874/