从 Google Firestore 中的子集合中删除超过一年的文档

时间:2021-03-29 21:22:08

标签: firebase google-cloud-firestore

我正在使用 Google 的 Firestore,并且我正在尝试删除子集合中超过一年的所有文档。这是当前的结构:

data:
  domain1.com:
    entries:
      1:
        created_at: 1507052341
      2:
        created_at: 1607052341
  domain2.com:
    entries:
      1:
        created_at: 1607052341
  domain3.com:
    entries:
      1:
        created_at: 1607052341
      2:
        created_at: 1507052341
      3:
        created_at: 1507052341

这是我到目前为止所做的尝试查找超过一年的条目,但它没有按预期工作并且快照总是返回为空:

let a_year_ago = Math.floor(Date.now() / 1000) - 31536000

this.db.collection("data/*/entries")
      .where('created_at', '<', a_year_ago)
      .get()
      .then(snapshot => {
        if (snapshot.empty) {
          return false
        }

        return snapshot
      })

你们对我如何检索这些超过一年的条目并删除它们有任何想法或建议吗?

提前致谢!!

1 个答案:

答案 0 :(得分:0)

我能够弄清楚。首先,我必须用我要搜索的字段创建一个新索引,然后更新代码以通过该索引搜索信息。

  1. 打开 Firestore。

  2. 转到“索引”>“单个字段”>“添加豁免”。

  3. 填写豁免详情:

  • 集合 ID: entries
  • 字段路径: created_at
  • 收藏组:已启用
  1. 更新您的代码以使用集合组:
let a_year_ago = Math.floor(Date.now() / 1000) - 31536000

this.db.collectionGroup('entries')
      .where('created_at', '<', a_year_ago)
      .get()
      .then(snapshot => {
        if (snapshot.empty) {
          return false
        }

        return snapshot
      })

轰隆隆!