Cách tốt nhất lấy giá trị của node cháu trên Firebase?

Mình có database này

authors:
    randomAuthorId1:
        authorId: 
        authorName:
    randomAuthorId2:
        authorID: 
        authorName:
books:
    randomAuthorId1:
        randomBookId1:
            bookId:
            bookName:
        randomBookId2:
            bookId:
            bookName:
    randomAuthorId2:
        randomBookId3:
            bookId:
            bookName:

Mình có giá trị của randomBookId2 mà không có giá trị randomAuthorId1, đây là code để mình lấy node randomBookId2:

DatabaseReference bookRef = FirebaseDatabase.getInstance().getReference("books");
bookRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot data : dataSnapshot.getChildren()) {
            if (data.hasChild("randomBookId2")) {
                Book book = data.child("randomBookId2").getValue(Book.class);
            }
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

Cách này thì nó sẽ loop tất cả con của books và kiểm tra để lấy giá trị node randomBookId2. Các bạn cho mình hỏi còn có cách nào tốt hơn không?
Thanks all
Đây là bài viết của mình trên StackOverflow mà chưa giải quyết được: LINK

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?