В следующих примерах показано, как удалять документы, поля и коллекции.
Запрос к ИИ для получения помощи от ИИ
Чтобы получить помощь от ИИ, скопируйте запрос ниже и вставьте его в свой ИИ-агент для программирования (например, Gemini в Android Studio, Antigravity, Claude Code, Codex или Cursor). Вы можете настроить запрос и повторить его с агентом. Подробные инструкции по установке вы найдете в статье Навыки агента Firebase.
Help me use Firebase in my app.
1. Make sure that **Firebase agent skills** are installed and updated. For Claude Code, Codex, or Cursor agents, help me install the Firebase plugin. For other agents, run `npx skills add firebase/agent-skills`. Always try to use **Firebase agent skills** for Firebase-related tasks.
2. Help me delete documents, fields, and collections from Cloud Firestore in my app.
Удалить документы
Чтобы удалить документ, используйте следующие методы delete() для разных языков:
Web
Используйте метод deleteDoc():
import { doc, deleteDoc } from "firebase/firestore"; await deleteDoc(doc(db, "cities", "DC"));
Web
Используйте метод delete():
db.collection("cities").doc("DC").delete().then(() => { console.log("Document successfully deleted!"); }).catch((error) => { console.error("Error removing document: ", error); });
Swift
Используйте метод delete():
do { try await db.collection("cities").document("DC").delete() print("Document successfully removed!") } catch { print("Error removing document: \(error)") }
Objective-C
Используйте метод deleteDocumentWithCompletion::
[[[self.db collectionWithPath:@"cities"] documentWithPath:@"DC"] deleteDocumentWithCompletion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error removing document: %@", error); } else { NSLog(@"Document successfully removed!"); } }];
Kotlin
Используйте метод delete():
db.collection("cities").document("DC") .delete() .addOnSuccessListener { Log.d(TAG, "DocumentSnapshot successfully deleted!") } .addOnFailureListener { e -> Log.w(TAG, "Error deleting document", e) }
Java
Используйте метод delete():
db.collection("cities").document("DC") .delete() .addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) { Log.d(TAG, "DocumentSnapshot successfully deleted!"); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error deleting document", e); } });
Dart
Используйте метод delete():
db.collection("cities").doc("DC").delete().then( (doc) => print("Document deleted"), onError: (e) => print("Error updating document $e"), );
Java
Используйте метод delete():
Python
Используйте метод delete():
Python
Используйте метод delete():
C++
Используйте метод Delete():
db->Collection("cities").Document("DC").Delete().OnCompletion( [](const Future<void>& future) { if (future.error() == Error::kErrorOk) { std::cout << "DocumentSnapshot successfully deleted!" << std::endl; } else { std::cout << "Error deleting document: " << future.error_message() << std::endl; } });
Node.js
Используйте метод delete():
Проложить маршрут
Используйте метод Delete():
PHP
Используйте метод delete():
Unity
Используйте метод DeleteAsync():
DocumentReference cityRef = db.Collection("cities").Document("DC"); cityRef.DeleteAsync();
C#
Используйте метод DeleteAsync():
Ruby
Используйте метод delete():
При удалении документа Cloud Firestore не удаляет автоматически документы в его подколлекциях. Вы по-прежнему можете получить доступ к документам подколлекции по ссылке.
Например, вы можете получить доступ к документу по пути /mycoll/mydoc/mysubcoll/mysubdoc, даже если удалите родительский документ по пути /mycoll/mydoc.
Несуществующие родительские документы появляются в консоли, но не отображаются в результатах запросов и снимках.
Если вы хотите удалить документ и все документы в его подколлекциях, это нужно сделать вручную. Подробнее о том, как удалять коллекции…
Удалить поля
Чтобы удалить определенные поля из документа, используйте следующие методы FieldValue.delete() для конкретного языка при обновлении документа:
Web
Используйте метод deleteField():
import { doc, updateDoc, deleteField } from "firebase/firestore"; const cityRef = doc(db, 'cities', 'BJ'); // Remove the 'capital' field from the document await updateDoc(cityRef, { capital: deleteField() });
Web
Используйте метод FieldValue.delete():
var cityRef = db.collection('cities').doc('BJ'); // Remove the 'capital' field from the document var removeCapital = cityRef.update({ capital: firebase.firestore.FieldValue.delete() });
Swift
Используйте метод FieldValue.delete():
do { try await db.collection("cities").document("BJ").updateData([ "capital": FieldValue.delete(), ]) print("Document successfully updated") } catch { print("Error updating document: \(error)") }
Objective-C
Используйте метод fieldValueForDelete::
[[[self.db collectionWithPath:@"cities"] documentWithPath:@"BJ"] updateData:@{ @"capital": [FIRFieldValue fieldValueForDelete] } completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error updating document: %@", error); } else { NSLog(@"Document successfully updated"); } }];
Kotlin
Используйте метод FieldValue.delete():
val docRef = db.collection("cities").document("BJ") // Remove the 'capital' field from the document val updates = hashMapOf<String, Any>( "capital" to FieldValue.delete(), ) docRef.update(updates).addOnCompleteListener { }
Java
Используйте метод FieldValue.delete():
DocumentReference docRef = db.collection("cities").document("BJ"); // Remove the 'capital' field from the document Map<String,Object> updates = new HashMap<>(); updates.put("capital", FieldValue.delete()); docRef.update(updates).addOnCompleteListener(new OnCompleteListener<Void>() { // ... // ...
Dart
Используйте метод FieldValue.delete():
final docRef = db.collection("cities").doc("BJ"); // Remove the 'capital' field from the document final updates = <String, dynamic>{ "capital": FieldValue.delete(), }; docRef.update(updates);
Java
Используйте метод FieldValue.delete():
Python
Используйте метод firestore.DELETE_FIELD:
Python
Используйте метод firestore.DELETE_FIELD:
C++
Используйте метод FieldValue::Delete():
DocumentReference doc_ref = db->Collection("cities").Document("BJ"); doc_ref.Update({{"capital", FieldValue::Delete()}}) .OnCompletion([](const Future<void>& future) { /*...*/ });
Node.js
Используйте метод FieldValue.delete():
Проложить маршрут
Используйте метод firestore.Delete:
PHP
Используйте метод FieldValue::deleteField():
Unity
Используйте метод FieldValue.Delete:
DocumentReference cityRef = db.Collection("cities").Document("BJ"); Dictionary<string, object> updates = new Dictionary<string, object> { { "Capital", FieldValue.Delete } };
C#
Используйте метод FieldValue.Delete:
Ruby
Используйте метод firestore.field_delete:
Удаление коллекций
Чтобы удалить всю коллекцию или подколлекцию в Cloud Firestore, извлеките (прочитайте) все документы в ней и удалите их. При этом взимается плата за чтение и удаление. Если у вас большие коллекции, вы можете удалять документы небольшими пакетами, чтобы избежать ошибок, связанных с нехваткой памяти. Повторяйте эти действия, пока не удалите всю коллекцию или подколлекцию.
Для удаления коллекции требуется координировать неограниченное количество отдельных запросов на удаление. Если вам нужно удалить целые коллекции, делайте это только из доверенной серверной среды. Удалить коллекцию из мобильного или веб-клиента можно, но это негативно скажется на безопасности и производительности.
Приведенные ниже фрагменты упрощены для ясности и не включают обработку ошибок, безопасность, удаление подколлекций или оптимизацию производительности. Подробнее о том, как удалять коллекции и подколлекции…
Веб-приложение
// Deleting collections from a Web client is not recommended.Swift
// Deleting collections from an Apple client is not recommended.Objective-C
// Deleting collections from an Apple client is not recommended.
Kotlin
// Deleting collections from an Android client is not recommended.Java
// Deleting collections from an Android client is not recommended.Dart
Удалять коллекции из клиента не рекомендуется.
Java
Python
Python
C++
// This is not supported. Delete data using CLI as discussed below.
Node.js
Проложить маршрут
PHP
Unity
// This is not supported. Delete data using CLI as discussed below.C#
Ruby
Как удалять данные с помощью правил TTL
Правило TTL определяет заданное поле как время истечения срока действия документов в заданной группе коллекций. Операции удаления TTL учитываются в стоимости удаления документов.
Подробнее о том, как управлять хранением данных с помощью правил TTL…
Задания на массовое удаление
В Cloud Firestore есть несколько инструментов для массового удаления. Выбирайте инструмент в зависимости от количества документов, которые нужно удалить, и требуемого уровня настраиваемости.
Для небольших задач, включающих тысячи документов, используйте консоль или интерфейс командной строки Firebase. При обработке больших объемов данных может истечь время ожидания, и вам придется запускать инструмент несколько раз.
Консоль
Вы можете удалять документы и коллекции на странице Cloud Firestore в консоли. При удалении документа из консоли удаляются все вложенные в него данные, включая подколлекции.
интерфейс командной строки Firebase
Вы также можете использовать интерфейс командной строки Firebase для удаления документов и коллекций. Чтобы удалить данные, используйте следующую команду:
firebase firestore:delete --database=DATABASE_ID PATH
Замените DATABASE_ID идентификатором базы данных, а PATH – путем к документу или коллекции.
Для удаления большого количества документов (миллионов) используйте один из следующих способов:
Управляемое массовое удаление
Cloud Firestore поддерживает массовое удаление одной или нескольких групп коллекций. Подробнее о массовом удалении данных…
Коннектор Dataflow
Для массовых операций с базой данных можно использовать Dataflow. Этот вариант предоставляет больше всего возможностей, но требует больше времени на настройку, чем другие способы массового удаления. В записи блога, посвященной коннектору Cloud Firestore для Dataflow, есть пример удаления всех документов в группе коллекций.