Azure 查询SDB非结构化JSON
CosmosDB如何查询动态JSON中的属性值 该应用程序允许将JSON存储为对象的一组自定义属性。它们被序列化并存储在CosmosDb中。例如,这里有两个条目:Azure 查询SDB非结构化JSON,azure,azure-sql-database,azure-cosmosdb,azure-cosmosdb-sqlapi,Azure,Azure Sql Database,Azure Cosmosdb,Azure Cosmosdb Sqlapi,CosmosDB如何查询动态JSON中的属性值 该应用程序允许将JSON存储为对象的一组自定义属性。它们被序列化并存储在CosmosDb中。例如,这里有两个条目: { "id": "ade9f2d6-fff6-4993-8473-a2af40f071f4", ... "Properties": { "fn": "Ernest", "ln": "Hemingway", "a_book": "The Old Man and th
{
"id": "ade9f2d6-fff6-4993-8473-a2af40f071f4",
...
"Properties": {
"fn": "Ernest",
"ln": "Hemingway",
"a_book": "The Old Man and the Sea"
},
...
}
及
如何构造查询以便在属性值中搜索?以下两种语法都可以使用
SELECT * FROM c where c.Properties["First Name"] = 'Salvador'
SELECT * FROM c where c.Properties.fn = 'Ernest'
我在找一个不涉及名字的东西
子属性,如从c中选择*,其中
这里的一些函数性质为“Ernest”
也许我理解了你的想法,你想通过属性的值而不是名称来过滤文档。如果是这样,您可以在cosmos db中使用
样本自定义项:
示例查询:
输出:
这里仅作总结,Ovi的udf功能如下:
function QueryProperties (Properties, filedValue) {
for (var k in Properties) {
if (Properties[k] && Properties[k].toString().toUpperCase().includes(filedValue.toString().toUpperCase()))
return true;
return false;
}
你说的是C LINQ查询还是SQL查询?什么都可以:但我想SQL最好,因为更多的人可以使用它。@Ovi嗨,我的答案对你有帮助吗?@JayGong-确实有帮助。我最后稍微修改了一下。只是作为评论发布到你的网站上answer@Ovi谢谢你的修改。我已经在回答中总结过了。这并不能完全解决问题,尼克。我在找一些不涉及子属性名称的东西,比如从c中选择*其中有些函数是c.Properties,'Ernest'@Ovi,在你的问题中不清楚。Jay的UDF将解决这个问题。谢谢,我最后对它做了一些修改,但这个想法很完美:函数QueryProperties属性,filedValue{for vark in Properties{if Properties[k]&&Properties[k]。toString.toUpperCase.includeFiledValue.toString.toUpperCase return true;}return false;}
function query(Properties,filedValue){
for(var k in Properties){
if(Properties[k] == filedValue)
return true;
}
return false;
}
SELECT c.id FROM c where udf.query(c.Properties,'Ernest')
function QueryProperties (Properties, filedValue) {
for (var k in Properties) {
if (Properties[k] && Properties[k].toString().toUpperCase().includes(filedValue.toString().toUpperCase()))
return true;
return false;
}