Java Firestore查询不等于Uid
很抱歉,我不得不问这个问题,我一直在研究无数的链接,但没有找到它。这似乎很简单,但却远非如此 我知道您不能在firestore中进行不等于查询,因此我的代码如下:Java Firestore查询不等于Uid,java,android,google-cloud-firestore,Java,Android,Google Cloud Firestore,很抱歉,我不得不问这个问题,我一直在研究无数的链接,但没有找到它。这似乎很简单,但却远非如此 我知道您不能在firestore中进行不等于查询,因此我的代码如下: private void getNotEqual() { // db defined elsewhere Query query = db.collection("collection") .whereLessThan("uid", user.getUid
private void getNotEqual() {
// db defined elsewhere
Query query = db.collection("collection")
.whereLessThan("uid", user.getUid())
.whereGreaterThan("uid", user.getUid())
.orderBy("uid");
query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
Log.d(TAG, "Size: " + task.getResult().size());
}
});
}
private void getNotEqual(){
//其他地方定义的数据库
Query Query=db.collection(“collection”)
.whereLessThan(“uid”,user.getUid())
.whereGreaterThan(“uid”,user.getUid())
.orderBy(“uid”);
query.get().addOnCompletListener(新的OnCompletListener()){
@凌驾
未完成的公共void(@NonNull任务){
Log.d(标记“Size:+task.getResult().Size());
}
});
}
但它仍然没有返回不平等的文件。Uid来自Firebase身份验证,并作为字符串存储在文档中作为字段。我是不是遗漏了什么
提前衷心感谢您
此查询始终不会返回任何文档。它有效地要求所有uid字段既大于又小于某个值的文档,这是一个不可能满足的条件。Firestore查询中的过滤器在逻辑上是“和”组合在一起的。它们不是逻辑上的“或”
听起来您希望执行两个单独的查询,然后在客户机中合并结果。一个查询将具有
whereLessThan(“uid”,user.getUid())
和另一个wheregreater(“uid”,user.getUid())
。但老实说,您可能更容易获取集合中的所有文档,并手动筛选出您不需要的文档。此查询始终不会返回任何文档。它有效地要求所有uid字段既大于又小于某个值的文档,这是一个不可能满足的条件。Firestore查询中的过滤器在逻辑上是“和”组合在一起的。它们不是逻辑上的“或”
听起来您希望执行两个单独的查询,然后在客户机中合并结果。一个查询将具有whereLessThan(“uid”,user.getUid())
和另一个wheregreater(“uid”,user.getUid())
。但老实说,您可能更容易获取集合中的所有文档,并手动筛选出您不需要的文档。引入了不相等查询,因此您现在可以使用:
private void getNotEqual(){
//其他地方定义的数据库
Query Query=db.collection(“collection”)
.whereNotEqualTo(“uid”,user.getUid())
.orderBy(“uid”);
query.get().addOnCompletListener(新的OnCompletListener()){
@凌驾
未完成的公共void(@NonNull任务){
Log.d(标记“Size:+task.getResult().Size());
}
});
}
引入了不相等查询,因此您现在可以使用:
private void getNotEqual(){
//其他地方定义的数据库
Query Query=db.collection(“collection”)
.whereNotEqualTo(“uid”,user.getUid())
.orderBy(“uid”);
query.get().addOnCompletListener(新的OnCompletListener()){
@凌驾
未完成的公共void(@NonNull任务){
Log.d(标记“Size:+task.getResult().Size());
}
});
}