2017-01-11 5 views
1

DocumentDBでネストされたオブジェクトをクエリする際に問題があります。私はデータの形式を制御できません。私は=「SampleDataを」「ATTR_VALS」を持つすべてのオブジェクトを見つけたいDocumentDBクエリのネストされたオブジェクト

{ 
    "SCHEMA_ID": { 
     "PROJECT": "A", 
     "MODEL": "B", 
     "GUID":"A GUID" 
    }, 
    "STATE": { 
     "Active": "True" 
    }, 
    "OBJECTS": { 
     "OBJECT": [ 
      { 
       "ATTR_VALS": { 
        "NAME": "Header", 
        "ID": "0", 
        "VALUE": [ 
         { 
          "NAME": "JobId", 
          "VAL": "1011656" 
         }, 
         { 
          "NAM": "Region", 
          "VAL": "West Coast" 
         } 
        ] 
       } 
      }, 
      { 
       "ATTR_VALS": { 
        "NAME": "SampleData", 
        "ID": "0", 
        "VALUE": [ 
         { 
          "NAME": "Height", 
          "VAL": "5" 
         }, 
         { 
          "NAM": "Length", 
          "VAL": "3" 
         } 
        ] 
       } 
      } 
     ] 
    } 
} 

、どこでそれらの項目はそう= 5

「高さ」を持っている:のは、オブジェクトがDocumentDBで次のようになりましょう私は持っています:

SELECT test.GUID 
FROM test 
join OBJECTS in test.OBJECTS 
join OBJECT in OBJECTS 
join ATTR_VALS in OBJECT 
join VALUE in ATTR_VALS 
WHERE ATTR_VALS.NAME = 'SampleData' AND VALUE.NAME='Height' AND VALUE.VAL='5' 

しかし、これは動作しませんし、結果を返しません。ありがとう!

+0

が欠落した投影句の

  • 小型タイプミスをエスケープしなければなりません「」演算子を使用して拡張することができますが、「次のページ」をクリックしたときには、結果を得るのですか?一部のクエリでは、最初のページに結果が返されない場合がありますが、後続のページで結果が返されます。 –

  • +0

    @AravindRamachandran私は0の結果を返します。私は.netコードでクエリを実行しています。同様のコードでは、ジョインがないと、SELECT * FROM test WHERE test.GUID = 'A GUID'のようにデータが正常に返されます。 – Jeremy

    答えて

    2

    クエリがなければなりません:

    SELECT test.SCHEMA_ID.GUID 
    FROM test 
    join OBJ in test.OBJECTS.OBJECT 
    join VAL in OBJ.ATTR_VALS["VALUE"] 
    WHERE OBJ.ATTR_VALS.NAME = "SampleData" AND VAL.NAME='Height' AND VAL.VAL='5' 
    

    私は変わっカップルの事:

    • のJOINは、配列ではなく、オブジェクトに対して実行されなければなりません。オブジェクトが
    • VALUEは、特別なキーワードであるとSCHEMA_ID
    関連する問題