Ich versuche, ein MongoDB-Abfrageobjekt basierend auf Daten zu erstellen, die von einem clientseitigen Suchformular empfangen werden. Mein Ziel ist es, die Datenbank mit allen vom Benutzer bereitgestellten Kriterien abzufragen, während der Benutzer einige Suchfelder leer lassen kann, wenn sie dies wünschen.Dynamische Abfrage MongoDB
Dies ist mein aktueller Versuch einer Abfrageobjekt ist:
var q = {}; // declare the query object
q['$and']=[]; // filter the search by any criteria given by the user
if((req.body.learninglanguages).length > 0){ // if the criteria has a value or values
q["$and"].push('{learningLanguages: {$in: ' + req.body.learninglanguages.split(",") + '}}'); // add to the query object
}
if((req.body.spokenlanguages).length > 0){
q["$and"].push('{spokenLanguages: {$in: ' + req.body.spokenlanguages.split(",") + '}}');
}
if((req.body.country).length > 0){
q["$and"].push('{country: {$in: ' + req.body.country.split(",") + '}}');
}
if((req.body.commethod).length > 0){
q["$and"].push('{comMethod: {$in: ' + req.body.commethod.split(",") + '}}');
}
Aber das resultierende Objekt ist:
{ '$and':
[ '{learningLanguages: {$in: Albanian,American Sign Language,Amharic,Arabic,Arabic (Egyptian)}}',
'{spokenLanguages: {$in: Akan,Albanian,American Sign Language,Amharic}}',
'{country: {$in: Åland Islands}}',
'{comMethod: {$in: whatsapp,email,face to face,skype}}' ] }
Wie kann ich richtig ein MongoDB $ in Abfrage von req.body Objekten baut ?
Haben Sie die Dokumentation konsultiert? https://docs.mongodb.com/manual/reference/operator/query/in/ – Derek
Ich habe, aber ich kann nichts hilfreiches zum dynamischen Erstellen von Abfrageobjekten finden. –
Bitte überprüfen Sie meine Antwort unten und markieren Sie sie korrekt, wenn sie Ihren Anforderungen entspricht – Derek