複数の Firestore クエリをローカルでマージすることは、特に結果の正しい順序を維持しようとする場合に困難になることがあります。ドキュメントの順序を維持しながらクエリを効率的にマージするための包括的なガイドは次のとおりです。
2 つのクエリをマージして結果の順序を保持するには、whenAllSuccess() メソッドの使用を検討してください。 Tasks クラスから:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance(); Query firstQuery = rootRef... Query secondQuery = rootRef... Task firstTask = firstQuery.get(); Task secondTask = secondQuery.get(); Task combinedTask = Tasks.whenAllSuccess(firstTask, secondTask).addOnSuccessListener(new OnSuccessListener<List<Object>>() { @Override public void onSuccess(List<Object> list) { // Iterate over the list to access the merged results in the order of the tasks } });
whenAllSuccess() メソッドは、提供されたすべてのタスクが成功した場合に、正常に完了した単一のタスクを返します。この場合、list パラメーターには、各要素がクエリの順序に対応するスナップショット リストのリストが含まれます。
クエリをマージするための別のオプションは、使用することです。 continueWith() メソッド。タスクを連鎖させることができます。
firstQuery.get().continueWith(new Continuation<QuerySnapshot, Object>() { @Override public Object then(@NonNull Task<QuerySnapshot> task) throws Exception { QuerySnapshot firstResults = task.getResult(); // Perform any additional necessary operations with the first results // Execute the second query and chain it to the continuation return secondQuery.get().continueWith(new Continuation<QuerySnapshot, Object>() { @Override public Object then(@NonNull Task<QuerySnapshot> task) throws Exception { QuerySnapshot secondResults = task.getResult(); List<DocumentSnapshot> mergedResults = new ArrayList<>(); mergedResults.addAll(firstResults.getDocuments()); mergedResults.addAll(secondResults.getDocuments()); // Return the merged results return mergedResults; } }); } }).addOnSuccessListener(new OnSuccessListener<Object>() { @Override public void onSuccess(Object result) { // Cast the result to a List<DocumentSnapshot> and access the merged results } });
この例では、最初のクエリの結果が取得され、必要な操作が実行されます。次に、2 番目のクエリが実行され、結果が最初の結果セットとマージされます。
どちらのアプローチも、アプリケーションのパフォーマンスに異なる影響を与える可能性があります。 whenAllSuccess() はすべてのクエリを同時に実行します。両方のクエリのパフォーマンス プロファイルが類似している場合、より効率的になります。 continueWith() はクエリを順番に実行します。これは、一方のクエリが他方のクエリよりも大幅に遅い場合に有益です。最終的に、最適なアプローチは、ユースケースの特定の要件によって異なります。
以上が結果の順序を維持しながら、複数の Firestore クエリをローカルでマージするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。