2017-07-21 2 views
0

Je suis en train de chercher seulement les objets du serveur avec correspondent à dire deux champs. Pour cela, j'ai besoin d'un opérateur and. Je n'ai aucune idée de comment utiliser un opérateur et sur une requête d'analyse. J'ai précédemment utilisé un opérateur Or sur une requête d'analyse. Un opérateur Or fait l'inverse de ce dont j'ai besoin dans mon programme. Je donne un exemple d'opérateur Or ci-dessous. S'il vous plaît me dire comment faire le MainQuery égal à whereContainedIn (maliste1 ET myList2)Et l'opérateur dans l'analyse de requête

ParseQuery myQuery1 = new ParseQuery("myTable"); 
myQuery1.whereContainedIn("key", myList1); 

ParseQuery myQuery2 = new ParseQuery("myTable"); 
myQuery2.whereContainedIn("key", myList2); 

List<ParseQuery<ParseObject>> queries = new ArrayList<ParseQuery<ParseObject>>(); 
queries.add(myQuery1); 
queries.add(myQuery2); 

ParseQuery<ParseObject> mainQuery = ParseQuery.or(queries); 
Now the mainQuery is equal to whereContainedIn(myList1 OR myList2) 
+0

appel « whereContainedIn » 2 fois sur le même objet de recherche en utilisant les filtres respectifs. N'utilisez PAS 2 requêtes séparées. –

Répondre

1

Si vous souhaitez rechercher dans myTable pour les éléments où la valeur de clé est contenue dans maliste1, myList2 vous pouvez créer une nouvelle liste avec la contenu de chacun d'eux ou appeler la méthode whereContainedIn deux fois:

ParseQuery myQuery1 = new ParseQuery("myTable"); 
myQuery1.whereContainedIn("key", myList1); 
myQuery1.whereContainedIn("key", myList2); 
// Test first if the Query builder retains both lists or if myList1 is replaced with myList2 

// OR 

// Only use unique values 
Set<T> mySet = new HashSet<T>(); 
set.addAll(myList1); 
set.addAll(myList2); 
List<T> myNewList = new ArrayList<T>(mySet); 
ParseQuery myQuery1 = new ParseQuery("myTable"); 
myQuery1.whereContainedIn("key", myNewList);