0
votes

Query de Mongodb conditionnel $ match

J'espère que quelqu'un a une réponse à ma question.

J'essaie de rechercher la requête

  1. Mon match sera varie
  2. Parfois, l'utilisateur peut oublier de soumettre un texte d'entrée

    Cependant, cliquez avec le texte d'entrée ou non, Il doit renvoyer des résultats (sans texte d'entrée renvoyera tous les matrices comme sans étage de match et avec le texte d'entrée renvoie des tableaux de correspondance).

    1. S'il y a du texte d'entrée

      {$ Match: {$ Texte: {$ Recherche: "bla"}}

      1. S'il n'y a pas de texte d'entrée

        {$ match: ""}

        Erreur de texte d'entrée vide "Erreur: le filtre de correspondance doit être une expression dans un objet"

        Je veux dire comme la manière suivante, xxx

        qui retourne "Erreur: le filtre de correspondance doit être une expression dans un objet"


0 commentaires

4 Réponses :


1
votes

Il devrait être

sinon si (entrée == "") {mymatch = {}}

Comme l'erreur dit $ Match nécessite un objet.


0 commentaires

0
votes

Construisez votre requête conditionnelle, le match ne doit être là que si l'utilisateur a ajouté un texte dans la recherche.


0 commentaires

0
votes

Vous pouvez écrire plus de code générique. Commençons par votre code et voyons ce que nous pouvons modifier xxx

de cette manière, vous avez défini votre pipeline d'agriculture lorsque vous souhaitez faire plus de fonctionnement.


0 commentaires

0
votes
var myMatch = {}

if(input == "bla"){
  myMatch["$text"]={};
  myMatch["$text"]["$search"]="bla";
}

db.collection.aggregate([
{ "$match": myMatch} ])
$match require {} Object if your condition is true make you pipeline $match object other wise {} object pass not any error  

0 commentaires