2016-10-26 2 views
0

Ich habe versucht, eine Abfragekriterien für wie etwas mit Morphis zu schreiben:Morphia MongoDB ein Array von String-Suche

db.Response.find({ $and: [ { fields: [ "NAME","EMAIL"]},{intent:"CHECKUSR" }] }) 

Können Sie mir helfen mit diesem? Das Problem hier ist, ich muss mit einem Array namens Felder überprüfen, und die obige Abfrage in MongoDB arbeiten, aber nicht in der Lage, eine geeignete Option in Morphia dafür zu finden. Jede Hilfe wird geschätzt.

+0

ich Ihnen helfen kann, wenn Sie mir die aktuelle Struktur des Dokuments geben kann. –

+0

Da es nicht erlaubt ist, den gesamten Inhalt hier zu veröffentlichen; Ich habe als Antwort auf das Hauptthema gepostet. Bitte scroll runter –

Antwort

0
Datastore ds = ... 
Query<Record> q = ds.createQuery(Record.class); 
q.and(
    q.criteria("Intent").equal(CHECKUSR), 
    q.criteria("fields.email").equal(EMAIL) 
); 

//list 
List<Record> entities = q.asList(); 

wäre ein weiterer Ansatz

seine im Grunde
Query q = ds.createQuery(Record.class).field("fields").hasThisElement(email); 

dies ist ein Beispiel, wie Sie Ihre Kriterien schreiben können. Sie können es für Ihren Zweck optimieren.

in den obigen Proben ist Nehmen Sie eine Klasse repräsentiert Ihr Dokument

+0

Danke Satish, aber ein Problem ist hier, nicht wahr? Für mich ist "Felder" das Feld im Dokument und ["Name", "E-Mail"] sind zwei String-Array-Elemente. Dein Vorschlag wird also nicht versuchen zu vergleichen. –

+0

also was meinst du ist ein Dokument {_id: someid, x: xvalue, y: yvalue, Felder: ["Someonename", "jemandemailid"]} richtig? und Sie müssen die Felder anhand der Namen und E-Mail-Werte abfragen? –

+0

Fügen Sie einfach das ganze Szenario unten hinzu. Bitte sehen Sie es sich an. Vielen Dank –