0
votes

Firestore> = ne renvoie pas les résultats comme prévu

J'utilise un > = à nouveau une collection. Pour tester le script, j'ai juste 4 entrées dans ma collection.

Ma requête est la suivante: xxx

workdesc de tous les 4 documents sont -

  • "Mise en œuvre KJ"
  • "Mise en œuvre HB urgente"
  • "Mise en œuvre Sharu Réponse rapide requise"
  • "Job urgent de la mise en œuvre de la CB"

    résultat selon moi, il aurait dû renvoyer tous les 4 documents, mais il ne renvoie que 2. Je fixe une capture d'écran du journal de la console et de la console Firebase:

     Entrez la description de l'image Ici

     Entrez la description de l'image ici

    Comment puis-je récupérer avec une lettre partielle n'importe où dans la chaîne.


1 commentaires

Salut user2828442. J'ai modifié beaucoup de matériel de chatty de vos questions dans le passé et vous aurez reçu les notifications de la plate-forme de dépassement de la pile. Certains de votre matériel ont un besoin, de qualité mendicité et suggère que vous pensez que les affichages de l'impuissance entraîneront des personnes de pitié de votre situation et / ou de se sentir contraindre à l'obligation sociale d'aider les moins fortunés. Ce n'est pas un comportement approprié pour une plate-forme de bénévole. S'il vous plaît collez-vous à la rédaction technique.


3 Réponses :


0
votes

Votre requête fonctionne comme prévu. Lorsque vous effectuez des comparaisons avec des chaînes, elles sont triées de manière lexicographique, ou en d'autres termes, alphabétiquement. Voici l'ordre de tri actuel de chaque valeur et où "Implex" parmi eux:

  1. "Job urgent de la mise en œuvre de la CB"
  2. "Mise en œuvre HB urgente"
  3. "impliquer"
  4. "Mise en œuvre KJ"
  5. "Mise en œuvre Sharu Réponse rapide requise"

    alphabétiquement, vous pouvez voir que "k" et "s" vient après "i". Donc, ce sont les seuls documents que vous allez obtenir à partir d'une requête où les valeurs de Workdesc sont supérieures à "impliquer".

    Si vous essayez de faire une recherche de sous-chaîne pour trouver toutes les chaînes de travail que contiennent "impliquer", ce n'est pas possible avec Firestore. Fireestore ne propose pas de recherches de sous-chaînes. vous ' Je dois trouver un autre moyen (probablement reflétant les données à une autre base de données qui le supporte).


1 commentaires

Ce n'est pas le genre de requête qui peut accabler la manière dont le feuestore doit échouer (et cela entend massivement). Numériser chaque document pour une sous-chaîne ne fonctionne pas bien lorsqu'il existe des milliards de documents dans une collection. Firestore n'autorise que la requête l'échelle, et cela n'est malheureusement pas l'un d'entre eux.



0
votes

Pour construire sur la réponse de Doug, Malheureusement, Firestore ne prend pas en charge le type de recherche de chaîne que vous souhaitez faire. Une solution potentielle qui éloigne la recherche de texte est que vous pouvez créer un autre champ sur vos documents TODO qui stocke si vous avez affaire à une "mise en œuvre" ou non.

Par exemple, si vous aviez un champ ISImplementalation , qui serait vrai pour la mise en œuvre TODOS et FALSE pour ceux qui ne sont pas, vous pouvez ajouter ce champ dans votre clause de votre requête. Cela garantirait que vous recherchez uniquement des todos de mise en œuvre.


0 commentaires

0
votes

Encore une fois de suite sur @ Doug's Réponse , Fireestore est une base de données forte> indexée forte>. Pour interroger les données, la requête doit être effectuée contre un index dans un seul balayage pour conserver des requêtes performantes dans la manière dont la base de données est conçue.

Firebase ne doit pas indexer les champs par défaut car ce n'est pas efficace et C'est une opération de taxation à l'échelle. Une approche différente est souvent la meilleure option. P>

prend par exemple la fonction suivante qui scindre une chaîne d'entrée dans des pièces interrogeables pouvant être ajoutées à un index. Lorsque la longueur de la chaîne d'entrée augmente, le nombre de sous-chaînes contenues à se développer rapidement. P>

firebase.firestore().doc('substringIndex/todos/workDesc/impl').get()
  .then(snap => snap.get('ids'))
  .then(console.log, console.error)


0 commentaires