在 DocumentDB 中查询以进行搜索
Query in DocumentDB for Searching
我有一个类似
的文件
{ id : "123", name : "sai", marks : {English : 50, Maths : 60, Science :90} }
标记可以包含任意主题和任意名称。 (架构不固定)
我想要任何一科不及格的学生名单(任何一科<35)
是否有任何方法可以执行此操作或需要更改架构才能获得结果?
如有任何帮助,我们将不胜感激。
因此,对您的模式稍作修改,我的文档现在看起来像这样 -
{id : "123", name : "sai", marks : [
{Subject : "English", Grade : 50},
{Subject : "Maths", Grade : 60},
{Subject : "Science", Grade : 90}
]
}
然后必须添加一个自定义的 IndexingPolicy IncludePath 以允许像这样的范围查询 -
{
Path : /"marks"/[]/"Grade"/?,
IndexType : Range,
NumericPrecision : 3
}
完成后,您可以运行以下查询
SELECT VALUE students FROM students JOIN marks IN students.marks WHERE marks.Grade < 60
如果您想在 .NET 中使用 LINQ 执行此操作,请告诉我,我将为该查询 post LINQ。
如果您不在 Grade 字段上添加 RANGE 索引,您仍然可以执行此查询,但您必须指定 "Allow Scan in Query" 选项以强制扫描。对性能来说不是很好,这种方式要好得多。
如果您不能将您的架构更改为我所拥有的,请告诉我,我将进一步研究查询
我有一个类似
的文件{ id : "123", name : "sai", marks : {English : 50, Maths : 60, Science :90} }
标记可以包含任意主题和任意名称。 (架构不固定)
我想要任何一科不及格的学生名单(任何一科<35)
是否有任何方法可以执行此操作或需要更改架构才能获得结果?
如有任何帮助,我们将不胜感激。
因此,对您的模式稍作修改,我的文档现在看起来像这样 -
{id : "123", name : "sai", marks : [
{Subject : "English", Grade : 50},
{Subject : "Maths", Grade : 60},
{Subject : "Science", Grade : 90}
]
}
然后必须添加一个自定义的 IndexingPolicy IncludePath 以允许像这样的范围查询 -
{
Path : /"marks"/[]/"Grade"/?,
IndexType : Range,
NumericPrecision : 3
}
完成后,您可以运行以下查询
SELECT VALUE students FROM students JOIN marks IN students.marks WHERE marks.Grade < 60
如果您想在 .NET 中使用 LINQ 执行此操作,请告诉我,我将为该查询 post LINQ。
如果您不在 Grade 字段上添加 RANGE 索引,您仍然可以执行此查询,但您必须指定 "Allow Scan in Query" 选项以强制扫描。对性能来说不是很好,这种方式要好得多。
如果您不能将您的架构更改为我所拥有的,请告诉我,我将进一步研究查询