Gowtham KK:
これはfirestoreデータベースの私の構造です。
期待される結果:経験の配列で、LANGの値が「スウィフト」であるすべてのジョブを取得します。
したがって、このあたりのように私は、最初の2文書を取得する必要があります。第三の文書には、「スウィフト」の経験を持っていません。
Query jobs = db.collection("Jobs").whereArrayContains("experience.lang","Swift");
jobs.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
//Always the queryDocumentSnapshots size is 0
}
});
回答のほとんどを試したが、どれも働いていません。この構造では、クエリデータへの方法はありますか?通常の配列でのみ使用可能ドキュメント。カスタムオブジェクトの配列には使用できません。
ダグ・スティーブンソン:
現在の文書構造と、それはあなたがしたいクエリを実行することはできません。Firestoreは、リストフィールド内のオブジェクトの個々のフィールドのためのクエリを許可しません。
何をしなければならないことは照会可能である、あなたの文書の追加フィールドを作成することです。たとえば、あなたがリストフィールドを作成することができます唯一の文書の一部である文字列の言語のリスト。これを使用すると、言語は一度少なくとも言及されているドキュメントを検索するクエリを配列には、含まれている使用することができます。
あなたのスクリーンショットに示されている文書について、あなたは値[「スウィフト」、「Kotlin」]で「言語」と呼ばれるリストのフィールドを持っているでしょう。