Java 如何访问随机子Firebase数据库。。?

Java 如何访问随机子Firebase数据库。。?,java,android,database,firebase,firebase-realtime-database,Java,Android,Database,Firebase,Firebase Realtime Database,是否有任何可能的方法从孩子的孩子那里得到结果。 我在寻找一个问题的多个答案 "questions" : { "Q1(Random ID )" : { "description" : "Deail of Question", "idQuestion" : "Q1", "time" : "17 Mar 2017 16:18:12", "title" : "Title Of Question", "user_id" : "bXCeW6

是否有任何可能的方法从孩子的孩子那里得到结果。 我在寻找一个问题的多个答案

"questions" : {
    "Q1(Random ID )" : {
      "description" : "Deail of Question",
      "idQuestion" : "Q1",
      "time" : "17 Mar 2017 16:18:12",
      "title" : "Title Of Question",
      "user_id" : "bXCeW6jfidbHuMCCCMkDGWcGZRS2"
    },
{
  "Answer" : {
    "81d19e85-8c6c-4824-9fb1-61a7cd316e32" : {
      "dateTime" : "17 Mar 2017 16:22:17",
      "Answer" : "Answer",
      "ProfessorId" : "da587c89-f001-43f2-984d-e6dbac491acc",
      "questionId" : "Q1"
    },
    "e2ec0556-4420-4d2f-b346-0b5cebeb1ebe" : {
      "dateTime" : "17 Mar 2017 16:55:27",
      "Answer" : "Answer 2 on Question 1",
      "answerId" : "0d20d6df-907d-4133-be53-ca6acf6c2ad1",
      "questionId" : "Q1"
    }
  },
随机生成的节点! 我想做这样的事

mdatabaseReference.child("Answer").child(* Here Im Using "*" Like we used to do in SQl to get all data I knw its not a SQL but its just for conecpt).equalTo(QID).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                if (Answer_List.size() > 0)
                    Answer_List.clear();


                for (DataSnapshot postsnapshot : dataSnapshot.getChildren()) {
而不是使用postSnapshot.getKey.equalsQID

这将使性能变慢,我正在寻找更快的东西

在找这样的东西吗

 mdatabaseReference.child("Answer").child("*").getKey().equals(QID).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
你在找我

然而,虽然这会起作用,但我强烈建议您更改数据模型,使这种类型的查询更具可伸缩性。因为答案属于问题,所以您应该对层次结构进行建模。当你不应该混合问题和答案时,你应该考虑在问题ID:

下建模答案。
"questions" : {
    "Q1(Random ID )" : {
      "description" : "Deail of Question",
      "idQuestion" : "Q1",
      "time" : "17 Mar 2017 16:18:12",
      "title" : "Title Of Question",
      "user_id" : "bXCeW6jfidbHuMCCCMkDGWcGZRS2"
    },
}
"Answer" : {
  "Q1": {
    "81d19e85-8c6c-4824-9fb1-61a7cd316e32" : {
      "dateTime" : "17 Mar 2017 16:22:17",
      "Answer" : "Answer",
      "ProfessorId" : "da587c89-f001-43f2-984d-e6dbac491acc",
    },
    "e2ec0556-4420-4d2f-b346-0b5cebeb1ebe" : {
      "dateTime" : "17 Mar 2017 16:55:27",
      "Answer" : "Answer 2 on Question 1",
      "answerId" : "0d20d6df-907d-4133-be53-ca6acf6c2ad1",
    }
  }
}
使用此结构,您可以通过直接查找而不是查询每个不断增长的列表来获得Q1的答案:

mdatabaseReference
  .child("Answer")
  .child("Q1")
  .addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
      for (DataSnapshot answerSnapshot: dataSnapshot.getChildren()) {
        System.out.println(answerSnapshot.child("Answer").getValue());
      }
    }
    ...
"questions" : {
    "Q1(Random ID )" : {
      "description" : "Deail of Question",
      "idQuestion" : "Q1",
      "time" : "17 Mar 2017 16:18:12",
      "title" : "Title Of Question",
      "user_id" : "bXCeW6jfidbHuMCCCMkDGWcGZRS2"
    },
}
"Answer" : {
  "Q1": {
    "81d19e85-8c6c-4824-9fb1-61a7cd316e32" : {
      "dateTime" : "17 Mar 2017 16:22:17",
      "Answer" : "Answer",
      "ProfessorId" : "da587c89-f001-43f2-984d-e6dbac491acc",
    },
    "e2ec0556-4420-4d2f-b346-0b5cebeb1ebe" : {
      "dateTime" : "17 Mar 2017 16:55:27",
      "Answer" : "Answer 2 on Question 1",
      "answerId" : "0d20d6df-907d-4133-be53-ca6acf6c2ad1",
    }
  }
}
mdatabaseReference
  .child("Answer")
  .child("Q1")
  .addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
      for (DataSnapshot answerSnapshot: dataSnapshot.getChildren()) {
        System.out.println(answerSnapshot.child("Answer").getValue());
      }
    }
    ...