首页 文章

DocumentDB:获取相同实体类型的所有文档

提问于
浏览
3

我将几种不同类型的文档(实体类型?)存储在一个集合中 . 获取某种类型的所有文档的最佳方法是什么(就像从表中使用 select * 一样) .

我到目前为止看到的选项:

  • 将类型包含为属性 . 但这意味着在获取文档时会查看每个文档,对吧?

  • 将类型名称添加到文档ID,然后尝试使用 typename* 按ID进行搜索 .

有一个更好的方法吗?

3 回答

  • 1

    没有内置的实体类型属性,但您当然可以创建自己的属性,并确保它已编入索引 . 此时,它与添加WHERE子句一样简单:

    WHERE docs.docType = "SomeType"
    

    假设它是基于散列的索引,这应该提供有效的查找并过滤掉不需要的文档类型 .

    虽然您可以将类型嵌入到属性(例如文档ID)中,但您可以像索引属性比较一样高效 .

    如果您想知道此查询对您造成了什么损失,则RU值将显示在门户网站中并通过 x-ms-request-charge 返回标头显示 .

  • 4

    我同意David的回答,使用单个 docType 字段是我第一次使用DocumentDB时所做的 . 但是,在进行一些实验后,我开始使用另一种选择 . 这是创建一个 is<Type> 字段并将其值设置为true . 对于查询而言,这比使用单个字符串字段更有效,因为索引本身是较小的部分索引,但可能会占用更多的存储空间 .

    这种方法的另一个优点是它为继承和mixin提供了优势 . 例如,我在某些实体上同时拥有 isLookup=trueisState=true . 我还有其他查找类型 . 然后在我的应用程序代码中,某些行为对于所有查找字段都是通用的,而其他行为仅适用于State类型 .

  • 2

    如果索引集合上的type属性,则不会是完整扫描 .

相关问题