2017-03-22 76 views
0

我在構建用於選擇Firebase數據庫中的數據的查詢時遇到一些困難。 我的數據庫結構是這樣的:通過內部字段選擇Firebase數據庫

enter image description here

我需要得到具有接觸ghopper所有用戶。這裏的結果是alovelace和eclarke。但我真的不知道如何在Java中做這個簡單的查詢。

謝謝你的幫助!

回答

1

你會使用火力地堡數據庫查詢爲:

DatabaseReference usersRef = FirebaseDatabase.getInstance().ref("users"); 
Query query = usersRef.orderByChild("contacts/ghopper").equalTo(true); 
// My top posts by number of stars 
query.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for (DataSnapshot snapshot: dataSnapshot.getChildren()) { 
      System.out.println(snapshot.getKey()); 
     } 
    } 

但這需要你定義一個索引爲每個用戶,它不能擴展。這是因爲你現在擁有的結構可以讓你輕鬆確定聊天室的用戶,而你正在嘗試相反的方式。

爲了有效地允許爲用戶獲取聊天室,您應該構造數據,以便其保留每個聊天室的用戶列表。這通常被稱爲次要/顛倒/倒排索引。

對於本見的例子:

+0

謝謝,其實我疑惑,我應該在這裏使用的結構。 將完整數據存儲到聯繫人(例如姓名)是否更好? – Binev