2017-01-18 24 views
1

Ich habe eine Sammlung mit dieser Art des Dokuments:DocumentDB Subdokument Vorsprung

{  
    "Date": 1481673600, 
    "Name": "Test" 
    "DailyCurve": [ 
     { 
     "TimeStamp": 1481673600, 
     "ACPower": 0,   
     "DCPower": 0 
     }, 
     { 
     "TimeStamp": 1481716800, 
     "ACPower": 30.599999999999998, 
     "DCPower": 0 
     }, 
     { 
     "TimeStamp": 1481717700, 
     "ACPower": 50.099999999999994, 
     "DCPower": 0 
     }, 
     { 
     "TimeStamp": 1481718600, 
     "ACPower": 46.6, 
     "DCPower": 0 
     }, 
    ] 
} 

Weil ich eine riesige Menge an Daten abfragen will ich will Projektion verwenden die RUs benötigt zu reduzieren.

ich zum Beispiel verstehen, wenn ich nur den Date Wert muß einfach ich diese Abfrage verwenden:

SELECT c.Date FROM c 

Aber jetzt mag ich auch die Unterlagen unter DailyCurve Eigenschaft projizieren.

Um den vollen Satz erhalten kann ich verwenden:

SELECT c.Date, c.DailyCurve FROM c 

Aber was muss ich nur die TimeStamp und ACPower Werte erhalten tun?

Das Ergebnis, das ich erstellen möchten sollte wie folgt aussehen:

[{  
    "Date": 1481673600, 
    "DailyCurve": [ 
     { 
     "TimeStamp": 1481673600, 
     "ACPower": 0, 
     }, 
     { 
     "TimeStamp": 1481716800, 
     "ACPower": 30.599999999999998, 
     }, 
     { 
     "TimeStamp": 1481717700, 
     "ACPower": 50.099999999999994, 
     }, 
     { 
     "TimeStamp": 1481718600, 
     "ACPower": 46.6, 
     }, 
    ] 
}, 
...] 

Antwort

1

Sie müssen benutzerdefinierte Funktionen, dies zu tun. Zuerst registriert ein UDF für Projekt wie diese:

function project(document) { 
    var result = {}; 
    result["Date"] = document["Date"]; 
    result["DailyCurve"] = []; 

    var dailyCurve = document["DailyCurve"]; 
    for (var idx in dailyCurve) { 
    var elem = dailyCurve[idx]; 
    result["DailyCurve"].push(
     { "TimeStamp": elem["TimeStamp"], 
     "ACPower": elem["ACPower"]}); 
    } 
    return result; 
} 

es dann in einer DocumentDB Abfrage verwenden wie:

SELECT udf.project(c) FROM c 

Wenn Sie native Unterstützung für Unterabfrage Projektionen in DocumentDB sehen mögen (ohne Notwendigkeit für UDFs), schlagen Sie bitte/upvote hier: https://feedback.azure.com/forums/263030-documentdb

+0

Vielen Dank Aravind von Microsoft :) Ich erstelle einen Vorschlag https://feedback.azure.com/forums/263030-documentdb/suggestions/17762254-native- Unterstützung für Unterabfrage-Projektionen –

Verwandte Themen