2017-03-22 3 views
0

firebaseデータベースでデータを選択するためのクエリを作成するのにいくつかの困難があります。 私のデータベース構造はこのようなものです:Firebaseデータベース内部フィールドで選択

enter image description here

私は接触ghopperを持つすべてのユーザーを取得する必要があります。ここで結果はalovelaceとeclarkeです。しかし、私は本当にどのようにこの単純なクエリをJavaで行うのか分かりません。

ありがとうございました!

答えて

1

あなたはそのためFirebaseデータベースクエリを使用したい:

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

関連する問題