Упорядочить коллекциюГрупп по серверу Timestamp - PullRequest
1 голос
/ 21 сентября 2019

Я создал базу данных, используя Firestore.

База данных выглядит следующим образом:

Существует основная коллекция с именем NBDB, внутри есть документы с uidдля каждого пользователя (например OJQRFOyYd....).Внутри каждого документа есть другая коллекция под названием MyBooks, а внутри этой коллекции есть документы с uid, которые содержат BookID, DateCreated и Popularity.

enter image description here

Используя следующий код, мне удалось получить все 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"));
            }
        }
    });

Однако мне хотелось, чтобы данные были упорядочены 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"));
            }
        }
    });

Однако она не работает, поскольку мой поиск не находится внутри документа каждой книги.

Есть ли способ сделать это?

Спасибо

1 Ответ

0 голосов
/ 21 сентября 2019

Это предоставит вам последний документ, который вы создали.

FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collectionGroup("MyBooks").orderBy("DateCreated", Query.Direction.DESCENDING).get()
    .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
        @Override
        public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
            for (QueryDocumentSnapshot document : queryDocumentSnapshots) {
                Log.d(TAG,document.getId() + " => " + document.getData().get( "BookID"));
            }
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...