2016-05-10 8 views
0

Ich habe eine Sammlung mehrere Clients enthält, Monate usw.MongoDB - eine Untergruppe von Dokumenten lädt zum Abfragen

Jeden Monat Ich brauche eine Reihe von Abfragen für die Sammlung ausführen Metriken abrufen - im Grunde eine Reihe von Zählungen .

Die meisten dieser Abfragen haben die gleichen 4 oder 5 Filter, mit zusätzlichen 1-2 Filtern, die sich für jede Abfrage ändern.

//standard filters: 

{ client: "ABC Corp", 
    environment: "Production", 
    device: "true", 
    registered: "true" 
} 

//special filters: 

{ type: "typeA", 
    screen: "screen1" } 

{ type: "typeA", 
    screen: "screen2" } 

In MSSQL würde ich eine Ansicht mit den vier Standard-Filter erstellen und Abfragen, die immer wieder zu sehen, die Anwendung der zusätzlichen 1-2 Filter die benötigten Kennzahlen abzurufen.

Irgendwelche Vorschläge darüber, was MongoDB oder grundlegende JS-Ansatz könnte ich dafür verwenden? Mein Ziel ist es, die Sammlung nicht immer wieder mit denselben Standardfiltern zu treffen.

Dank V

Antwort

0

Sie $ aus Operator in Aggregation Rahmen dies zu erreichen, verwenden könnte.

$out Stufe Ausgabeergebnisse in eine neue Sammlung

Zum Beispiel:

db.collection.aggregate([ 
    { 
    $match: 
     { 
     client: "ABC Corp", 
     environment: "Production", 
     device: "true", 
     registered: "true" 
     } 
    }, 
    { 
    $out: "new_collection" 
    } 
]) 

Dann können Sie Ihre zusätzliche Abfragen auf dem new_collection laufen.

Ihre "Ansicht" -Kollektion wird jedes Mal neu erstellt, wenn Sie sie in der $ out-Phase verwenden, aber alle Indizes, die Sie für diese Sammlung definiert haben, bleiben intakt.

Verwandte Themen