nur bestimmte Dokumente einer DB selektieren

  • Hallo,


    ich möchte über Dokumente einer DB iterieren, die ein bestimmtes Item gesetzt (="true") haben.


    Momentan mache ich das so, dass ich mir von der DB via:


    DocumentCollection mails = db.getAllDocuments();


    und dann über die Collection iteriere und jedes Dokument einzeln
    darauf überprüfe, ob das Flag gesetzt ist.
    Bei einer großen Menge an Dokumenten (von denen nur ein kleiner
    Teil für meine Operationen relevant sind) zieht sich diese
    "selektion" leider sehr in die Länge. Gibt es hier evtl. einen Ansatz
    der mich das Problem etwas performanter lösen lässt?
    (kann ich evtl. aus Java heraus die Formelsprache (SELECT) (für meine Zwecke) benutzen?)

  • Danke, das sieht gut aus.


    Kann ich mit der Search Methode auch auf das Nicht vorhanden sein
    eines Items testen?
    also, sowas wie:


    {SELECT (Form = "Memo" | Form = "Reply") & !(item = "true" & item = "false") }


    (wenn man mal davon ausgeht, dass "item" nur true/false annehmen kann)


    ?

  • Sorry, muss doch nochmal nerven:


    Folgendes:


    DocumentCollection mails = maildb.getAllDocuments();
    String searchFormular = "{SELECT @All}";
    DocumentCollection searchCollection = maildb.search(searchFormular);


    mails.getCount() ist jetzt ungleich searchCollection.getCount() (=0), wieso?

  • ok, ohne die geschweiften Klammern klappt es wunderbar. Habe mich durch Suchergebnisse in anderen Foren in die Irre führen lassen. Jetzt muss ich nur noch irgendwie rausfinden, wie ich nur Dokumente bestimmten Alters herausfiltere. Aber auch da wird mich try'n'error sicher zum Ziel führen.