循环遍历数据存储区光标

时间:2017-11-25 02:06:17

标签: google-app-engine go google-cloud-datastore datastore

有没有办法通过游标循环数据存储结果,直到没有结果?

我需要拉出每条记录并迭代它。但它就像400万条记录。所以我想以1000块开始工作。

我知道下面的内容不起作用。但这只是为了展示我希望的那种逻辑。

q := datastore.NewQuery("Foo").Limit(1000)
while t, err := models.Client.GetAll(models.Ctx, q, &results) {
  ...
  myCursor, err := t.Cursor()
  q.Start(cursor)
}
编辑:这是我发现如何做到这一点的唯一方法。我确信有更优雅的方式。

limit := 1000
offset := 0
resultCount := 1
for resultCount > 0 {
    q := datastore.NewQuery("Foo").Limit(limit).Offset(offset)
    _, err := client.GetAll(ctx, q, &foo)
    checkErr(err)
    resultCount = len(foo)
    processPaths(foo)
    offset += resultCount

}

它实际上并没有使用光标。

0 个答案:

没有答案