代码之家  ›  专栏  ›  技术社区  ›  Ovi

查询SDB非结构化JSON

  •  1
  • Ovi  · 技术社区  · 6 年前

    如何在动态JSON中查询属性值?

    {
        "id": "ade9f2d6-fff6-4993-8473-a2af40f071f4",
        ...
        "Properties": {
            "fn": "Ernest",
            "ln": "Hemingway",
            "a_book": "The Old Man and the Sea"
        },
        ...
    }
    

    {
        "id": "23cb9d4c-da56-40ec-9fbe-7f5178a92a4f",
        ...
        "Properties": {
            "First Name": "Salvador",
            "Last Name": "Dali",
            "Period": "Surrealism"
        },
        ...
    }
    

    如何构造查询以便在 Properties ?

    2 回复  |  直到 6 年前
        1
  •  1
  •   halfer    4 年前

    我在找的东西不涉及的名字 子属性,比如SELECT*FROM c WHERE

    Properties ,不是名字。如果是的话,你可以用 UDF 在宇宙数据库。

    自定义项示例:

    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')
    

    输出:

    enter image description here


    function QueryProperties (Properties, filedValue) {     
        for (var k in Properties) { 
            if (Properties[k] && Properties[k].toString().toUpperCase().includes(filedValue.toString().toUpperCase())) 
                return true;    
        return false; 
    }
    
        2
  •  0
  •   Nick Chapsas    6 年前

    以下两种语法都可以使用。

    SELECT * FROM c where c.Properties["First Name"] = 'Salvador'
    
    SELECT * FROM c where c.Properties.fn = 'Ernest'