В следующих примерах показано, как удалять документы, поля и коллекции.
Удалить документы
Чтобы удалить документ, используйте следующие специфичные для языка методы delete()
:
Web modular API
Используйте метод deleteDoc()
:
import { doc, deleteDoc } from "firebase/firestore"; await deleteDoc(doc(db, "cities", "DC"));
Web namespaced API
Используйте метод delete()
:
db.collection("cities").doc("DC").delete().then(() => { console.log("Document successfully deleted!"); }).catch((error) => { console.error("Error removing document: ", error); });
Быстрый
Используйте метод delete()
:
db.collection("cities").document("DC").delete() { err in if let err = err { print("Error removing document: \(err)") } else { print("Document successfully removed!") } }
Цель-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+KTX
Используйте метод 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 modular API
Используйте метод 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 namespaced API
Используйте метод 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()
:
db.collection("cities").document("BJ").updateData([ "capital": FieldValue.delete(), ]) { err in if let err = err { print("Error updating document: \(err)") } else { print("Document successfully updated") } }
Цель-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+KTX
Используйте метод 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.
Цель-C
// Deleting collections from an Apple client is not recommended.
Kotlin+KTX
// 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
Вы также можете использовать интерфейс командной строки Firebase для удаления документов и коллекций. Используйте следующую команду для удаления данных:
firebase firestore:delete [options] <<path>>
Удалить данные с помощью консоли
Вы можете удалять документы и коллекции со страницы Cloud Firestore в консоли . При удалении документа из консоли удаляются все вложенные данные в этом документе, включая все вложенные коллекции.
Удалить данные с политиками TTL
Политика TTL определяет данное поле как время истечения срока действия для документов в данной группе сбора. Операции удаления TTL учитываются в расходах на удаление документов.
Сведения о настройке TTL см. в разделе Управление хранением данных с помощью политик TTL .
Для получения дополнительной информации о кодах ошибок и о том, как решить проблемы с задержкой при удалении данных, посетите страницу устранения неполадок .
Удалить данные с помощью потока данных
Dataflow — отличный инструмент для массовых операций с базой данных Firestore. В сообщении блога о соединителе Firestore для Dataflow есть пример удаления всех документов в группе коллекций.