J'utilise un Ma requête est la suivante: p> 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: P> Comment puis-je récupérer avec une lettre partielle n'importe où dans la chaîne. p> p> > = code> à nouveau une collection. Pour tester le script, j'ai juste 4 entrées dans ma collection.
workdesc code> de tous les 4 documents sont - p>
p>
3 Réponses :
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: P>
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 Si vous essayez de faire une recherche de sous-chaîne pour trouver toutes les chaînes de travail que contiennent strong> "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). P>
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.
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. P>
Par exemple, si vous aviez un champ ISImplementalation CODE>, 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. P>
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)
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.