在cosmos db中查询嵌套数组

时间:2018-03-02 12:18:23

标签: azure azure-cosmosdb

具有以下提及的文件清单。

文档1:

select f.lastdatetime,f.postname
from c 
join f in c.PostList 
where f.postname='aaa' 

文档2:

select f.lastdatetime,f.postname
from c 
join f in c.PostList 
where f.postname='aaa' ORDER BY f.lastdatetime ASC

我需要一个名字列表,它等于“aaa”和orderby lastdatetime。

我可以获得查询

function initMap() {
    if($('#map').length > 0) {
        // your code
    }
}

但是我需要使用orderby lastdatetime来获取列表。

当我尝试以下查询时,我收到错误

  

不支持按相关集合排序

public boolean hasUneven(int[] a) {
    for (int i = 0; i < a.length; i++) {
        if (a[i] % 2 != 0) {
            return true;
        }
    }
    return false;
}

有人有想法通过吗?

1 个答案:

答案 0 :(得分:0)

正如@Rafat Sarosh在评论中所说的那样:Order-by over correlated collections is not supported它将在未来启用。

但是,我建议您采用一种解决方法来跟踪您的解决方案:使用Azure Cosmos DB UDF

您可以将查询结果作为参数传递给UDF进行排序处理。

查询Sql:

select f.lastdatetime,f.postname
 from c 
join f in c.PostList 
where f.postname='aaa' 

UDF示例代码:

function userDefinedFunction(arr){
    var i = arr.length, j;
    var tempExchangVal;
    while (i > 0) {
        for (j = 0; j < i - 1; j++) {
            if (arr[j].lastdatetime < arr[j + 1].lastdatetime) {
                tempExchangVal = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tempExchangVal;
            }
        }
        i--;
    }
    return arr;
}

希望它对你有所帮助。