2016-08-31 1 views
-2

EDIT: Ich sehe für diese Frage Downvote, Bearbeiten meiner Frage, um Klarheit und Lesbarkeit hinzuzufügen.DocumentDB Abfragen Hilfe/Referenz

Ich bin von SQL-Hintergrund ramping auf Dokument DB Query-Syntax. Ich suche nach Dokument db-äquivalenter Syntax für die folgenden T-SQL-Abfragen. Jede Hilfe wird geschätzt.

  1. Select * from c wo c.header.TimeStampField> = 'Time Stamp Constant'

  2. Select * from c in dem Ober (c.stringifield) =

  3. "Klein in Großbuchstaben" Anzahl wählen (1) von c - Anzahl aller Dokumente ermitteln

Ist es möglich, die Dokumente über eine Abfrage zu löschen? wie RDBMS-Abfragen (aus Tabelle löschen?)

+0

Dies ist wirklich eine Reihe von Fragen. Ich werde versuchen, unten zu beantworten, aber Sie sollten darüber nachdenken, es zu brechen. –

Antwort

1

Ihre Abfragen # 1 und # 2 sollten genauso funktionieren wie angegeben.

Abfrage # 3 ist nicht möglich. Die Gesamtgröße der Dokumente wird jedoch in der documentsCount-Eigenschaft in dem Antwort-Header x-ms-resource-usage zurückgegeben. Das ist eine neue Funktion, die vom SDK, das Sie verwenden, unterstützt wird. Sie können also alle Dokumente zählen, indem Sie alle Zeilen durchlaufen. Here ist ein voll funktionsfähiges Beispiel für das Ausführen in einer gespeicherten Prozedur. Alternativ könnten Sie SELECT 1 FROM c tun und alle 1en zurückholen und zählen/summieren.

Es ist nicht möglich, Dokumente über eine Abfrage wie in SQL zu löschen. Sie können dies in einem Sproc tun oder die clientseitige Funktionalität für das Löschen eines Dokuments verwenden. In beiden Fällen müssen Sie zunächst die Dokumente abfragen und anschließend einzeln löschen.

0
  1. Ihre Abfrage ist bereits gut für DocumentDB.
  2. Ihre Abfrage ist korrekt und sollte funktionieren. Eine zusätzliche Optimierung wäre jedoch, eine separate Eigenschaft in demselben Dokument zu speichern, das alle Großbuchstaben enthält, und explizit danach zu suchen. Diese Änderung würde den Index verwenden, anstatt einen Scan durchzuführen.
  3. Larrys Antwort für # 3 ist der richtige Weg.

Für weitere auf der Abfragesprache zu graben, könnte man Spielplatz benutzen @https://www.documentdb.com/sql/demo

1

Mit DocumentDB neuesten Aggregate Unterstützung (Feb 2017), haben Sie jetzt zählen mit so etwas wie erzeugen können:

SELECT VALUE COUNT(1) 
FROM mydocuments d 

Dies funktioniert auch mit Filtern. Zum Beispiel:

SELECT VALUE COUNT(1) 
FROM mydocuments d 
WHERE d.foo = "bar" 

Es gibt auch Unterstützung für min/max/Durchschnitt/Summe.