我们在为 Cosmos Document DB 编写查询时遇到问题,我们想要创建一个新的文档属性并在 ORDER BY 子句中使用它
例如,如果我们有一组文档,例如:
{
"Name": "Geoff",
"Company": "Acme"
},
{
"Name": "Bob",
"Company": "Bob Inc"
}
...我们编写一个查询,例如SELECT * FROM c ORDER BY c.Name
这工作正常并返回两个文档
但是,如果我们要添加具有附加属性的新文档:
{
"Name": "Geoff",
"Company": "Acme"
},
{
"Name": "Bob",
"Company": "Bob Inc"
},
{
"Name": "Sarah",
"Company": "My Company Ltd",
"Title": "President"
}
...我们编写一个查询,例如SELECT * FROM c ORDER BY c.Title
它只会返回 Sarah 的文档,并排除没有 Title 属性的 2 个文档。
这意味着 ORDER BY 子句的行为就像一个过滤器而不仅仅是一个排序,这似乎是出乎意料的。
似乎所有文档模式都可能随着时间的推移添加属性。除非我们返回并将这些属性添加到容器中的所有现有文档记录中,否则我们永远无法在不排除记录的情况下在 ORDER BY 子句中使用它们。
有谁有解决方案允许 ORDER BY 仅影响结果集的排序顺序?