2017-10-07 19 views
9

Firestoreに複数の文書を1回の要求で保存することは可能ですか? このループでは可能ですが、リスト内の項目ごとに1つの保存操作が発生します。 FirebaseドキュメントからFirestoreで一度に複数の文書を作成/更新する方法

for (counter in counters) { 
    val counterDocRef = FirebaseFirestore.getInstance() 
      .document("users/${auth.currentUser!!.uid}/lists/${listId}/counters/${counter.id}") 
    val counterData = mapOf(
      "name" to counter.name, 
      "score" to counter.score, 
    ) 
    counterDocRef.set(counterData) 
} 

答えて

15

また、セットの任意の組み合わせで、単一のバッチとして複数の操作を実行する()、更新()、または()メソッドを削除することができます。複数のドキュメントにバッチ書き込みを行い、バッチ内のすべての操作をアトミックに完了できます。

// Get a new write batch 
WriteBatch batch = db.batch(); 

// Set the value of 'NYC' 
DocumentReference nycRef = db.collection("cities").document("NYC"); 
batch.set(nycRef, new City()); 

// Update the population of 'SF' 
DocumentReference sfRef = db.collection("cities").document("SF"); 
batch.update(sfRef, "population", 1000000L); 

// Delete the city 'LA' 
DocumentReference laRef = db.collection("cities").document("LA"); 
batch.delete(laRef); 

// Commit the batch 
batch.commit().addOnCompleteListener(new OnCompleteListener<Void>() { 
    @Override 
    public void onComplete(@NonNull Task<Void> task) { 
     // ... 
    } 
}); 

Firestore multiple write operations

はい、それは私が探してい残念なことにドキュメントで逃したまさにだ

+0

...それがお役に立てば幸いです。 –

+1

このような書き込み機能と同様に、一括読み込みする方法はありますか?つまり、10個のドキュメント参照があれば、それらを取得できますか?ありがとう! – Shaun

+0

@MarcelBochtlerドキュメントには、バッチ操作が単一の読み込みとして請求されているという記述はありません。バッチ処理は、操作を原子的に(一度に、またはまったく)実行する方法ですが、それは請求とは異なります。私の回答で引用した請求ページでは、「Cloud Firestoreで実行する各文書の読み込み、書き込み、および削除に料金がかかります。 –

関連する問題