В следующих примерах показано, как удалять документы, поля и коллекции.
Удалить документы
Чтобы удалить документ, используйте следующие методы 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)") }
Цель-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
Используйте метод 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)") }
Цель-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 CLI
Вы также можете использовать интерфейс командной строки Firebase для удаления документов и коллекций. Используйте следующую команду для удаления данных:
firebase firestore:delete [options] <<path>>
Удалить данные с помощью консоли
Удалить документы и коллекции можно со страницы Cloud Firestore в консоли . При удалении документа из консоли удаляются все вложенные данные в этом документе, включая все подколлекции.
Удаление данных с помощью политик TTL
Политика TTL определяет данное поле как срок действия документов в данной группе коллекций. Операции удаления TTL учитываются в расходах на удаление документа.
Дополнительные сведения о настройке TTL см. в разделе Управление сроком хранения данных с помощью политик TTL .
Для получения дополнительной информации о кодах ошибок и о том, как устранить проблемы с задержкой при удалении данных, посетите страницу устранения неполадок .
Удаление данных с помощью Dataflow
Dataflow — отличный инструмент для массовых операций с базой данных Firestore. В блоге, посвященном соединителю Firestore для Dataflow, приведен пример удаления всех документов в группе коллекций.
Использовать управляемое массовое удаление
Cloud Firestore поддерживает массовое удаление одной или нескольких групп коллекций. Дополнительную информацию см. в разделе Массовое удаление данных .