如何自动删除N天之前创建的Firestore文档?

时间:2019-04-09 17:05:47

标签: android google-cloud-firestore

我有这样的数据结构:

雇员(集合)> {雇员ID}(文档)>聊天(集合)> {ChatId}(文档)。

在聊天收集中,每个文档都有3个字段。 1. senderName,2. sendTimestamp,3. messageText。

我想删除7天(从今天开始)之前的聊天。

我认为通过云功能可能会实现,但是我确实是基本用户,对云功能了解不多。请注意,我不想自动创建它(定时作业)。我将每天或随时随地手动进行操作。

我确实为此进行了很多搜索,但是确实很难。请帮助我。

1 个答案:

答案 0 :(得分:0)

此任务的很大一部分涉及查询子集合。您可以在这里阅读有关此想法的更多信息:Firestore query subcollections

在撰写本文时,基本上有两个选择:

  1. 查询整个顶级集合(员工),例如db.collection('Employees').get()。然后,您将不得不遍历每个应用对象,并根据其日期范围查询其子集合(Chat)。 Firestore query by date range,了解有关在Firestore中按日期查询的更多信息。根据Employee文档的数量,这可能会导致大量读取,但这是“最简单”的方法,因为不必更改数据模型/应用程序。
  2. 重组数据以使子集合Chat成为顶级集合。然后,您可以按日期对该顶级集合进行查询。读取次数较少,但可能不可行,具体取决于该应用程序是否正在生产/愿意更改代码。

无论您决定采用哪种方法,功能部门肯定都能完成此任务。需要注意的一件事是,一个Function使用Admin SDK执行,这意味着它基本上可以忽略Firestore上设置的安全规则。