2017-10-20 14 views
11

「写真」というキーを持つ文書「ユーザー」があります。ここには、保存されている文字列の配列、つまり「写真」文書のIDがあります。Firestore:文書の配列内の項目による照会

この「写真」フィールドで「ユーザー」に質問します。「写真」プロパティにこのIDを持つすべてのユーザーが必要です。

これはファイヤーストアで可能ですか?

答えて

11

私たちのロードマップにはありますが、残念ながらまだありません。一方

、あなたはの形で、代わりにマップを使用する必要があります:今、あなたはphotos.id1 == trueによってフィルタリングすることにより、ID1を持つすべてのユーザーを見つけることができます

photos: { 
    id1: true 
    id2: true 
} 

Firebase documentationでそのようなセットを照会する方法の詳細をご覧ください。いくつかは、各キーのインデックスを作成することについて混乱しているようだとして、ここでは

+4

このロードマップはどこかに公開されていますか?ちょっと興味があるんだけど。 –

+0

そうではありません。私たちは一般的に将来の機能については話しません。予期せぬ変化(または実行可能性)が変わることがあるためです。 –

+2

@DanMcGrathこの機能/ロードマップのアップデートはありますか? –

0

は答えの拡張のビットは、このようにあなたが

documentReference.where('param','==','value').onSnapshot(...) 
のような単純なクエリを行うことができます単純なクエリのためFirestoreはすでにインデックスデータを、あります

しかし、これらのパラメータのデータにインデックスを作成しない限り、複合クエリは実行できません。だから、限り、あなたはあなたが

usersCollection :      (a collection) 
    uidA:        (a document) 
     photoField:      (a field value that is a map or object) 
      fieldID1 : true    (a property of the photoField) 
      fieldID2 : true    (a property of the photoField) 
      etc ... 

として保存することができますし、単にユーザーを照会することができますidの写真を必要とするよう

documentReference.where('param','==','value').where(..otherparams...).onSnapshot(...) 

:だから、このような何かを行うことができるようにインデックスが必要になります次のようなインデックスや同様のクエリを作成する必要なく、photoFieldにfieldID1があるとします。

firestore.doc('usersCollection/uidA').where('photoField.fieldID1','==',true).onSnapshot(...) 
関連する問題