2016-08-02 25 views
0

Ich habe Azure DocumentDB verwendet, um einige Schlüssel-Werte-Paare zu speichern. Dies ist die Struktur des Dokuments IIn Azure DocumentDB funktionieren einige Abfragen nicht

verwendet
{ 
    "Key": "Deleted", 
    "Value": { 
     "email": "[email protected]" 
    } 
} 

Wenn ich DocumentDB Abfrage so schreiben,

SELECT C.Value FROM C 

Diese Abfrage funktioniert nicht. Hier ist die Fehlermeldung, die ich bekomme.

Syntax error, incorrect syntax near 'Value'. 

Aber diese Abfrage funktioniert gut,

SELECT C.Key FROM C 

Ich verstehe 'Value' sollte ein Stichwort in azur documentdb sein. Wie kann ich es abfragen?

+0

Haben Sie versucht, diesen Bezeichner zu zitieren? Etwas wie 'SELECT C.'Value 'FROM C' oder' SELECT C. "Wert" FROM C' –

+0

haben Sie versucht, Wert c.value auszuwählen? – Aravind

+0

@ MilanTomeš Ja, ich habe beides versucht. Kein Fortschritt !. –

Antwort

2

Da Ihre Dokumente als JSON gespeichert sind, können Sie auf diese zugreifen, wie folgt:

SELECT C['Value'] FROM C 

in Dies wird zur Folge haben:

[ 
    { 
    "Value": { 
     "email": "[email protected]" 
    } 
    } 
] 
2

Wert ein Schlüsselwort in DocumentDB Syntax ist so ist der Grund, warum Sie Erhalte einen Fehler. Siehe Value-Schlüsselwort in diesem Artikel DocumentDB syntax - Das VALUE-Schlüsselwort bietet eine Möglichkeit, JSON-Wert zurückzugeben.

Um dies zu umgehen Sie es so, wie Yannick hat gesagt heißt

SELECT C['Value'] FROM C 
1

In DocumentDB Abfrage Grammatik abfragen kann, ist die Syntax < collection_expresion> .property_name genau gleich wie < collection_expression> [ "property_name"]. So effektiv,

c.name 

gleiche ist wie

c["name"] 

Die Syntax < collection_expression> [ "property_name"] erlaubt es, Eigenschaften derefence, die nicht-Kennung Zeichen haben könnte wie 'mein Wert' (Raum zwischen meinem und Wert) oder Schlüsselwörter wie 'Value', 'Select' usw.

Daher

SELECT C["Value"] 
FROM C 

wird in Ihrem Fall funktionieren.