【发布时间】:2021-02-03 16:07:24
【问题描述】:
我有一个 CosmosDb 集合,其中包含如下所示的文档:
{
"status": [0/1]
"someFlag": [true/false]
"score": 24.0
}
我想用一些复杂的排序来查询这个集合:
- 首先我想获取 status 为 1 且 someFlag 为 true 的文档
- 二,status为1,someFlag为false
- 三、status为0且someFlag为true
- 四、status为0且someFlag为false
所以我有 4 个部分,我希望在每个部分中从最高分开始排序。 我可以使用单个 SQL 查询或使用 .NET 客户端对数据库进行单个请求以某种方式做到这一点吗?
【问题讨论】:
-
所以...这似乎更多地是关于过滤,在
WHERE子句中(您可以使用OR和AND拥有多个过滤器)。我建议发布您的 SQL 查询,以及您遇到问题的地方。 -
这与过滤无关,我想获取所有记录并像我描述的那样对它们进行排序。我能想到解决这个问题的唯一方法是进行 4 个查询并连接结果,但我想知道是否有办法在单个查询中做到这一点。
-
对 - 我在
where子句中向您指出了or和and,它们旨在满足您的要求。将其与order by结合使用。这也在 SQL API 文档中。我建议尝试让查询正常工作,然后编辑您的问题以显示您的特定输出问题、错误等。 -
所以我认为这里的混淆是你没有提供你想要的输出应该是什么的例子(这就是为什么,在我原来的评论中,我要求澄清)。如果您尝试在单个查询中创建多个排序的文档列表,那么不,您不能在单个查询中执行此操作。我提供了一个答案,但它假设您需要在一个联合中进行四个查询。
-
@Husker 我帮你发布答案。这可能对其他社区成员有益。
标签: azure azure-cosmosdb azure-cosmosdb-sqlapi