Firestore: Wie führe ich eine Abfrage mit Ungleichheit / Ungleichheit durch?

Ich möchte aus der Firestore-Sammlung nur Artikel auswählen, die NICHT von mir geschrieben wurden.
Ist es wirklich so schwer?

Jeder Artikel hat das Feld “owner_uid”.

Das ist es:
Ich möchte nur schreiben äquivalent zu "select * from articles where uidrequest.auth.uid"

Firestore bietet keine Ungleichheitsüberprüfungen. Laut der Dokumentation :

Die where () -Methode benötigt drei Parameter: ein zu filterndes Feld, eine Vergleichsoperation und einen Wert. Der Vergleich kann < , <=, ==,> oder> = sein.

Ungleichheitsoperationen werden nicht wie andere Operationen skaliert, die einen Index verwenden . Firestore-Indizes eignen sich für Bereichsabfragen. Bei dieser Art von Index müsste das Backend für eine Ungleichheitsabfrage immer noch jedes Dokument in der Sammlung prüfen, um Ergebnisse zu erzielen, und das ist extrem schlecht für die performance, wenn die Anzahl der Dokumente zunimmt.

Wenn Sie Ihre Ergebnisse filtern müssen, um bestimmte Elemente zu entfernen, können Sie dies immer noch lokal tun.

Sie können auch mehrere Abfragen verwenden, um einen bestimmten Wert auszuschließen. So etwas, wenn Sie alles außer 12 wünschen. Abfrage für Wert <12, dann Abfrage für Wert> 12, dann füge die Ergebnisse im Client zusammen.

Aus der Firebase-Dokumentation

Abfragen mit einer! = -Klausel. In diesem Fall sollten Sie die Abfrage in eine Größer-als-Abfrage und eine Kleiner-als-Abfrage aufteilen. Obwohl beispielsweise die Abfrageklausel (“age”, “! =”, “30”) nicht unterstützt wird, können Sie die gleiche Ergebnismenge erhalten, indem Sie zwei Abfragen kombinieren, eine mit der Klausel where (“age”, “< "," 30 ") und eins mit der Klausel wo (" Alter ","> “, 30).