Я создал базу данных, используя Firestore
.
База данных выглядит следующим образом:
Существует основная коллекция с именем NBDB
, внутри есть документы с uid
для каждого пользователя (например OJQRFOyYd....
).Внутри каждого документа есть другая коллекция под названием 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"));
}
}
});
Однако мне хотелось, чтобы данные были упорядочены 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"));
}
}
});
Однако она не работает, поскольку мой поиск не находится внутри документа каждой книги.
Есть ли способ сделать это?
Спасибо