В следующих примерах показано, как удалять документы, поля и коллекции.
Удалить документы
Чтобы удалить документ, используйте следующие специфичные для языка методы 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); });
Быстрый
Используйте метод 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"), );
Ява
Используйте метод delete()
:
Питон
Используйте метод delete()
:
Python
Используйте метод delete()
:
С++
Используйте метод 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()
:
Единство
Используйте метод DeleteAsync()
:
DocumentReference cityRef = db.Collection("cities").Document("DC"); cityRef.DeleteAsync();
С#
Используйте метод DeleteAsync()
:
Руби
Используйте метод 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() });
Быстрый
Используйте метод 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);
Ява
Используйте метод FieldValue.delete()
:
Питон
Используйте метод firestore.DELETE_FIELD
:
Python
Используйте метод firestore.DELETE_FIELD
:
С++
Используйте метод 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()
:
Единство
Используйте метод FieldValue.Delete
:
DocumentReference cityRef = db.Collection("cities").Document("BJ"); Dictionary<string, object> updates = new Dictionary<string, object> { { "Capital", FieldValue.Delete } };
С#
Используйте метод FieldValue.Delete
:
Руби
Используйте метод firestore.field_delete
:
Удалить коллекции
Чтобы удалить всю коллекцию или подколлекцию в Cloud Firestore , извлеките (прочитайте) все документы из этой коллекции или подколлекций и удалите их. Этот процесс влечёт за собой расходы как на чтение, так и на удаление. Если у вас большие коллекции, рекомендуется удалять документы небольшими партиями, чтобы избежать ошибок нехватки памяти. Повторяйте этот процесс, пока не удалите всю коллекцию или подколлекцию.
Удаление коллекции требует координации неограниченного количества отдельных запросов на удаление. Если вам нужно удалить всю коллекцию целиком, делайте это только из доверенной серверной среды. Хотя удалить коллекцию из мобильного/веб-клиента возможно, это негативно скажется на безопасности и производительности.
Приведённые ниже фрагменты кода несколько упрощены и не затрагивают вопросы обработки ошибок, безопасности, удаления подколлекций или повышения производительности. Подробнее об одном из рекомендуемых подходов к удалению коллекций в рабочей среде см. в разделе «Удаление коллекций и подколлекций» .
Интернет
// Deleting collections from a Web client is not recommended.
Быстрый
// 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
Удалять коллекции из клиента не рекомендуется.
Ява
Питон
Python
С++
// This is not supported. Delete data using CLI as discussed below.
Node.js
Идти
PHP
Единство
// This is not supported. Delete data using CLI as discussed below.
С#
Руби
Удаление данных с помощью Firebase CLI
Вы также можете использовать Firebase CLI для удаления документов и коллекций. Для удаления данных используйте следующую команду:
firebase firestore:delete [options] <<path>>
Удалить данные с помощью консоли
Вы можете удалить документы и коллекции со страницы Cloud Firestore в консоли . Удаление документа из консоли удаляет все вложенные данные в этом документе, включая все подколлекции.
Удаление данных с политиками TTL
Политика TTL определяет определённое поле как срок действия документов в определённой группе коллекций. Операции удаления в течение TTL учитываются в стоимости удаления документов.
Информацию о настройке TTL см. в разделе Управление хранением данных с помощью политик TTL .
Дополнительную информацию о кодах ошибок и способах устранения задержек при удалении данных можно найти на странице устранения неполадок .
Удаление данных с помощью Dataflow
Dataflow — отличный инструмент для массовых операций с базой данных Firestore. В статье блога, посвящённой коннектору Firestore для Dataflow, есть пример удаления всех документов в группе коллекций.
Использовать управляемое массовое удаление
Cloud Firestore поддерживает пакетное удаление одной или нескольких групп коллекций. Подробнее см. в разделе «Массовое удаление данных» .