2016-06-23 3 views
0

Ich fühle mich wie ich in letzter Zeit etwas verlernen musste. Ich gehe weiter im Kreis.Wie erstellt man ein AggregationOutput Objekt, um es später zu benutzen

Ich habe einen Versuch zu fangen in der Methode, die ich ein AggregationOutput-Objekt verwenden möchte. Nach dem Fang möchte ich zurückgeben, was ich hoffe, sind die Werte des Feldes, das ich suche. Diese Werte erhalte ich aus einer Aggregatmethode, die keine andere Methode als das AggregationOutput-Objekt finden kann.

Etwas wie folgt aus:

List<DBObject> results = new ArrayList<DBObject>(); 
AggregationOutput output = new AggregationOutput(results); 
try 
    { 

oder

AggregationOutput output = new AggregationOutput(null); 
    try 
    { 

Ich bin nicht in der Lage eine AggregationOutput OHNE sofort speichert darin die Werte des Gesamtverfahrens zu schaffen. Wie folgt aus:

AggregationOutput output = collection.aggregate(pipe); 

Dies zumindest unlogisch scheint, wenn nicht falsch plaing, was macht ich vermute, dass ich bin ein großes Konzept fehle, das ist nicht erlaubt mir, diese Methode zu verwenden (Aggregat) richtig.

Ich würde gerne wissen, was dieses Objekt für sich selbst erklärt werden muss, so kann ich erklären, in den Versuch gehen, das Objekt instanzieren, und dann nach dem Fang das Objekt zurückgeben.

Wenn es eine andere Möglichkeit gibt, dies zu tun, ohne AggregationOutput zu verwenden, würde ich auch gerne wissen, weil ich keinen Weg finde.

edit:

@GET 
    @Path("/get/{item}/{id}") 
    @Produces(MediaType.APPLICATION_JSON) 
    public String get(@PathParam("item") String item, @PathParam("id") String id) { 

     AggregationOutput output; 
     try 
     { 

      List<DBObject> result = new ArrayList<DBObject>(); 
      output = new AggregationOutput(result); 
//here I would operate with the output, then return the result as I usually do, an array or some other object that can be transformed into json 
+1

Sie können keine Deklaration AggregationOutput-Ausgabe ausführen; und dann eine Instanzausgabe = neue neue AggregationOutput (Ergebnisse); später? – Newton

+0

Nein, ich kann nicht, wenn ich die Instanziierung im Versuch mache, heißt es: "Der Konstruktor AggregationOutput (Liste ) ist nicht sichtbar". Und das funktioniert für jede Kombination, die mir einfällt. Und ich versuche sogar zu emulieren, wie es in der Bibliothek selbst gemacht wird, also bin ich irgendwie verloren –

+1

hast du gerade den Versuch übersprungen und die Methode mit einem Würfen markiert? – Newton

Antwort

0

vielleicht ist einen Versuch wert.

statt

public String get() 
{ 
    try {} 
    catch() {} 
} 

Versuch tun

public String get() throws ExceptionName {} 

//assuming you will use get in main 
public static void main (String [] args) 
{ 
    try { get(); } 
    catch (ExceptionName e) {} 
} 

sonst verknüpfen Sie mir den Code zu tun, und ich werde versuchen, es an meinem Ende debuggen.

+0

Das könnte leider funktionieren Ich habe kein Haupt (und ich bin mir nicht wirklich sicher, aber ich denke nicht, dass ich auch eines brauche, in meinem Fall.) Ich ging mit einer anderen Lösung, die sich als gut genug erweisen muss, aber bis jetzt funktioniert es. Vielen Dank für die Hilfe! –

+1

Ich würde gerne die andere Lösung wissen – Newton

+1

So war das ursprüngliche Ziel, irgendwie eine eindeutige Abfrage für Mongo zu erstellen, um 1 Feld abgerufen werden und 2 Abfragen als Bedingungen erhalten.Das ist ziemlich einfach mit Find, aber mit distinct hatte ich keinen Erfolg damit. Ich schaute mich um, aber es gab keine Beispiele, also war ich mir nicht sicher, ob ich es falsch machte, oder es sollte nichts mit dieser Syntax gemacht werden. Mit dieser Suche habe ich einen Weg gefunden, das Gleiche zu tun, allerdings mit einer etwas komplexen Suche mit AggregationOutput. Ich fand schließlich, dass es tatsächlich möglich ist, zwei Parameter zu einem BasicDBObject hinzuzufügen und sie als Abfrage für distinct zu verwenden. –

Verwandte Themen