Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在firestore中使用多个字段的查询_Java_Android_Firebase_Google Cloud Firestore - Fatal编程技术网

Java 在firestore中使用多个字段的查询

Java 在firestore中使用多个字段的查询,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,我有一个firestore收藏,其中包括书籍的名称 我有一个带有搜索字段的活动,我让用户通过查询收藏来查找一本书 以下查询对我很有用: db.collection( "Books" ) .whereGreaterThanOrEqualTo( "BookTitle", s.toString() ).whereLessThanOrEqualTo( "BookTitle", s.toString() + "\uF7F

我有一个firestore收藏,其中包括书籍的名称

我有一个带有搜索字段的活动,我让用户通过查询收藏来查找一本书

以下查询对我很有用:

db.collection( "Books" )
        .whereGreaterThanOrEqualTo( "BookTitle", s.toString() ).whereLessThanOrEqualTo( "BookTitle", s.toString() + "\uF7FF" ).limit( 5 ).get()
        .addOnCompleteListener( task -> {
            if (task.isSuccessful()) {
                for (QueryDocumentSnapshot document : task.getResult()) {
                DOING SOMETHING
                }
            }
        } );
但是,我现在将另一个字段添加到我的收藏中的一些文档中,称为
UserID
,并查询所有没有此字段的书籍,如下所示:

db.collection( "Books" )
        .whereGreaterThanOrEqualTo( "BookTitle", s.toString() ).whereLessThanOrEqualTo( "BookTitle", s.toString() + "\uF7FF" ).whereNotEqualTo( "UserID", null ).limit( 5 ).get()
        .addOnCompleteListener( task -> {
            if (task.isSuccessful()) {
                for (QueryDocumentSnapshot document : task.getResult()) {
                    DO SOMETHING
                }
            }
        } );
我的错误是:

All where filters with an inequality (notEqualTo, notIn, lessThan, lessThanOrEqualTo, greaterThan, or greaterThanOrEqualTo) must be on the same field. But you have filters on 'BookTitle' and 'UserID'
有没有其他方法可以达到这个效果

我想我可以获取文档,然后检查其中的UserID值是多少,但我可能会以这种方式读取不需要的文档


感谢您的参考,请参阅Firebase文档上的示例。@Dondi OP已经意识到这些限制,并正在寻找解决方法。在每个图书文档中出现“UserID”的含义是什么?一本书是否属于一个用户?为什么要存储空值?@AlexMamo,我想在“Books”集合中包含两种类型的文档。一种是属于用户的书籍,因此它们会出现在搜索和其他类型中,UserID为null,用于算法的其他部分,不会显示在搜索中,因为没有用户有这本书。那么为什么不使用两个单独的集合呢?