有没有一种方法可以通过字典值搜索CosmosDB项目?

时间:2020-06-27 02:29:58

标签: c# sql .net-core azure-cosmosdb

我有一个给我一个字符串name的方法。我有一个包含多个项目的CosmosDB容器。这些项目的格式如下。

{
   .
   .
   .
   dictParam: {
      "123": "foo",
      "321": "bar"
   }
   .
   .
   .
}

是否可以格式化查询以返回具有name作为dictParam中值之一的项目?因此,如果name等于“ foo”,查询将搜索容器中的所有项目,检查每个项目的dictParam的值,并返回具有给定名称的第一个项目作为其中一个字典的值。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用udf。

UDF:

function iteration(data,str){
    for(var key in data){
        if(data[key] == str){
            return true;
        }
    }
    return false;
}

SQL:

SELECT top 1 c.dictParam FROM c where udf.iteration(c.dictParam,'foo')

结果:

[
    {
        "dictParam": {
            "123": "foo",
            "321": "bar"
        }
    }
]

希望这可以为您提供帮助。

顺便说一句,正如David的评论所说,数组条目将有助于搜索。您只需要像这样尝试sql:

SELECT top 1 c.dictParam   FROM c where ARRAY_CONTAINS(c.dictParam,{"itemValue":"foo"},true)