Android 按服务器时间戳排序collectionGroup

Android 按服务器时间戳排序collectionGroup,android,firebase,google-cloud-firestore,Android,Firebase,Google Cloud Firestore,我使用Firestore创建了一个数据库 数据库如下: 有一个名为NBDB的主集合,其中有针对每个用户的uid文档(例如ojqrfoyd….)。在每个文档中都有另一个名为MyBooks的集合,在这个集合中有一些带有uid的文档,其中包含BookID、DateCreated和Popularity 通过使用以下代码,我成功获得了所有的BookIDs感谢collectionGroup查询: FirebaseFirestore db = FirebaseFirestore.getInstance();

我使用
Firestore
创建了一个数据库

数据库如下:

有一个名为
NBDB
的主集合,其中有针对每个用户的
uid
文档(例如
ojqrfoyd….
)。在每个文档中都有另一个名为
MyBooks
的集合,在这个集合中有一些带有uid的文档,其中包含
BookID
DateCreated
Popularity

通过使用以下代码,我成功获得了所有的
BookID
s感谢collectionGroup查询:

FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collectionGroup( "MyBooks" ).get()
    .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
        @Override
        public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
            for (QueryDocumentSnapshot document : queryDocumentSnapshots) {
                Log.d(TAG,document.getId() + " => " + document.getData().get( "BookID"));
            }
        }
    });
FirebaseFirestore db=FirebaseFirestore.getInstance();
db.collectionGroup(“MyBooks”).get()
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(QuerySnapshot QueryDocumentSnapshot){
用于(QueryDocumentSnapshot文档:QueryDocumentSnapshot){
Log.d(标记,document.getId()+“=>”+document.getData().get(“BookID”));
}
}
});
但是,我希望数据按DateCreated字段排序。 我想先订购数据库,然后使用上面的函数,比如:

FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collectionGroup( "MyBooks" ).orderBy("DateCreated").get()
    .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
        @Override
        public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
            for (QueryDocumentSnapshot document : queryDocumentSnapshots) {
                Log.d(TAG,document.getId() + " => " + document.getData().get( "BookID"));
            }
        }
    });
FirebaseFirestore db=FirebaseFirestore.getInstance();
db.collectionGroup(“MyBooks”).orderBy(“DateCreated”).get()
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(QuerySnapshot QueryDocumentSnapshot){
用于(QueryDocumentSnapshot文档:QueryDocumentSnapshot){
Log.d(标记,document.getId()+“=>”+document.getData().get(“BookID”));
}
}
});
但是它不起作用,因为我的搜索不在每本书的文档中

有办法吗


谢谢你

我的书
我的书
?你的代码与数据库不匹配。@AjahnCharles很抱歉是我的书,我编辑了这是一个典型的错误!我通常创建一个与Firestore结构相匹配的数据类,并在其中创建一个包含所有字段名和路径常量的伴生对象,因此对我来说,它应该是
db.collectionGroup(Book.path).orderBy(Book.DATE\u CREATED)
-有助于减少打字错误。检查logcat,查看是否有关于需要索引的警告。
MyBook
MyBooks
?你的代码与数据库不匹配。@AjahnCharles很抱歉是我的书,我编辑了这是一个典型的错误!我通常创建一个与我的Firestore结构匹配的数据类,并在其中创建一个包含所有字段名和路径常量的伴生对象,因此对我来说,它将是
db.collectionGroup(Book.path)。orderBy(Book.DATE\u CREATED)
-有助于减少拼写错误。检查logcat,查看是否有关于需要索引的警告。