В следующих примерах показано, как удалять документы, поля и коллекции.
Удалить документы
Чтобы удалить документ, используйте следующие специфичные для языка методы 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 connector for Dataflow есть пример удаления всех документов в группе коллекций.
Использовать управляемое массовое удаление
Cloud Firestore поддерживает массовое удаление одной или нескольких групп коллекций. Для получения дополнительной информации см. раздел Массовое удаление данных .