2016-06-22 7 views
1

複数の条件でデータをフィルタリングすることができるデータ構造を構築するためのベストプラクティス、私は1.000.000ユーザーのリストを持っている、データは次のようになります。Firebase:たとえば迅速

users: { 
    $userId: { 
    name: "", 
    sex: "", 
    age: "", 
    city: "", 
    maritalStatus: "", 
    // can be more 
    } 
} 

私はにしたいですフィルタ、用のpaginateデータ:都市X.

に住む年齢< 30と単一ているユーザー、男性は、クエリのこの種は、苦痛が少ないようにすることをお勧めはありますか?

+0

があることを解決します安いです:https://github.com/davideast/Querybase –

答えて

2

Firebaseには一度に複数の子を照会する直接的な方法はありません。

あなたはそれを容易にするために、あなたのデータを構造化することができます - 例えば

users 
    $userId 
    gender_age: male_27 
    $userId 
    gender_age: male_32 

を次に、30と40の間に男性のために照会する:

gender_age....queryStartingAtValue("male_30").endingAtValue("male_40") 

結果を絞り込むう - あなたは可能性があり例えば、(概念的な)目的のコードにフィルタリングします。

if snapshot.child("maritalStatus") = "Single" and 
    snapshot.child("city") = "AnyTown" then 
     //add person to list for display 

これをさらに絞り込んで結果を絞り込みます。

users 
    $userId 
    city_gender_age: anytown_male_27 

city_gender_age....queryStartingAtValue("anytown_male_30").endingAtValue("anytown_male_40") 

残念なことに、クエリがあまり具体的でない場合、パターンは分解されます。例えば30から40までの任意の場所で男性または女性のいずれかを検索している場合、これは機能しません。

しかし、ディスクスペースがそう別のノードに「重複」データを格納すると、これは簡単になり、ライブラリ

another_node 
    $user_id 
     city_age: anytown_27 
+0

おかげであなたの答えです。答えにはまだ開いています。 –

+0

@ThịnhPhạmこれはそれが得られるほど良いです.. nosqlデータベースはこのようです。私は彼らがなぜ私の意見でコーナーケースでのみ有用であるときに人気があるのか​​わからない。 – EralpB