and*_*130 39 firebase google-cloud-firestore
我想从Firestore集合中选择仅由我编写的文章.
这真的很难吗?
每篇文章都有字段"owner_uid".
多数民众赞成:
我只想写相当于"select * from articles where uid<>request.auth.uid"
Dou*_*son 44
Firestore不提供不平等检查.根据文件:
where()方法有三个参数:要过滤的字段,比较操作和值.比较可以是<,<=,==,>或> =.
不等式操作不像使用索引的其他操作那样扩展.Firestore索引适用于范围查询.对于这种类型的索引,对于不等式查询,后端仍然必须扫描集合中的每个文档以便得出结果,并且当文档数量变大时,这对性能非常不利.
如果您需要过滤结果以删除特定项目,您仍然可以在本地执行此操作.
您还可以选择使用多个查询来排除不同的值.像这样的东西,如果你想要除了12之外的所有东西.查询值<12,然后查询值> 12,然后在客户端中合并结果.
对于 android,使用Task Api应该很容易实现。新手示例:
FirebaseFirestore db = FirebaseFirestore.getInstance();
Query lessQuery = db.collection("users").whereLessThan("uid", currentUid);
Query greaterQuery = db.collection("users").whereGreaterThan("uid", currentUid);
Task lessQuery Task = firstQuery.get();
Task greaterQuery = secondQuery.get();
Task combinedTask = Tasks.whenAllSuccess(lessQuery , greaterQuery)
.addOnSuccessListener(new OnSuccessListener<List<Object>>() {
@Override
public void onSuccess(List<Object> list) {
//This is the list of "users" collection without user with currentUid
}
});
Run Code Online (Sandbox Code Playgroud)
此外,您可以使用它组合任何一组查询。
对于网络,有rxfire
归档时间: |
|
查看次数: |
19161 次 |
最近记录: |