有没有一种方法可以获取所有数组字段不包含一个或多个值的文档,现在有“ array-contains”,但是是否有“ array-not-contains”之类的东西?
答案 0 :(得分:2)
我认为目前尚不可能。我会尝试查看此博客文章以供参考。
进行查询答案 1 :(得分:2)
您只能基于索引查询Firestore,这样所有查询都可以扩展到搜索数十亿文档而没有性能问题。
索引通过记录数据集中存在的值来工作。如果索引跟踪不存在的内容,则它可能不会高效。这是因为与您的数据集相比,不存在的值的范围非常大,因此无法对其进行索引。查询某些值的不存在将需要扫描您的所有文档,并且无法缩放。
答案 2 :(得分:0)
考虑到您的馆藏文档数量很少,您可以使用onCreate云功能触发器将其所有ID存储在另一个文档中,从客户端下载此文档并进行客户端过滤。如果您担心性能,也可以在云功能内完成所有这些操作。
您将额外读取1条信息,但这没什么大不了的,每个文档最多可以有1 MB的存储空间,这很多,因此您不必担心太多,也可以将这些ID分成不同的内容文档,如果文档太大,则将其合并到客户端/云功能上。
这对于少量数据非常有效,但是如果您期望数百万个文档,那么您将无能为力。
答案 3 :(得分:0)
Firestore最近添加了对a not-in
clause的支持。
citiesRef.where('country', 'not-in', ['USA', 'Japan']);
这将获取country
存在且具有除“ USA”,“ Japan”或“ null”以外的其他值的所有文档。