在DocumentDB中查询以进行搜索

时间:2015-03-14 09:25:30

标签: c# search azure-cosmosdb

我有类似

的文件
{ id : "123", name : "sai", marks : {English : 50, Maths : 60, Science :90} }

标记可以包含任何主题和任何名称。 (架构不固定)

我想要在任何一个科目中失败的学生名单(在任何科目中<35)

是否有任何方法可以执行此操作或需要更改架构才能获得结果?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

因此,稍微修改了您的架构,我的文档现在看起来像这样 -

{id :  "123", name :  "sai", marks : [
        {Subject :  "English", Grade :  50},
        {Subject :  "Maths", Grade :  60},
        {Subject :  "Science", Grade :  90}
    ]
}

然后必须添加一个自定义的IndexingPolicy IncludePath,允许像这样的Range查询 -

    {
        Path :  /"marks"/[]/"Grade"/?,
        IndexType :  Range,
        NumericPrecision :  3
    }

一旦到位,您可以运行以下查询

    SELECT VALUE students FROM students JOIN marks IN students.marks WHERE marks.Grade < 60

如果您想在.NET中使用LINQ执行此操作,请告诉我,我将发布此查询的LINQ。

如果您未在成绩字段中添加RANGE索引,您仍然可以执行此查询,但您必须指定&#34;允许在查询中扫描&#34;强制扫描的选项。性能不佳,这种方式要好得多。

如果您无法将架构更改为我所拥有的架构,那么请告诉我,我将对查询进行更多介绍