【问题标题】:I have limit of 12 items, but dynamodb query always returns 10 only我有 12 个项目的限制,但 dynamodb 查询总是只返回 10
【发布时间】:2017-12-12 17:21:51
【问题描述】:

我正在使用dynamodb npm 查询dynamodb

当我如下查询时,虽然我将 limit 设置为 12 个项目,但它总是返回 10 个项目

TableDB
  .query(lang)
  .filter('users').in(['case1','case2'])
  .attributes(['offerId', 'lang'])
  .ascending()
  .usingIndex('lang-date-index')
  .limit(12)
  .exec((err, data) => {
    console.log(data)
  }

我不想再次使用 lastEvaluateKey 查询接下来的 2 项。

我错过了什么吗?

【问题讨论】:

  • 您确定数据有超过 10 项?
  • 是的,当然。
  • 如果你尝试使用小于 10 的限制呢?它会返回正确的金额吗?如果是这样。也许您在服务器设置中限制最多返回 10 个结果?如果 limit
  • 调试后知道如果我删除.filter它会给出12个结果,如果我应用.filter它会给出10个结果lastEvaluateKey(意味着它有更多结果)。 @Mykola 如果我的结果少于 5 个,它会起作用
  • 也许这会提供一些信息stackoverflow.com/questions/40138551/…

标签: javascript node.js amazon-dynamodb


【解决方案1】:

Dynamo 先应用限制,然后才应用过滤器。见Scan limit。 这意味着,如果您的表格按以下顺序包含 3 个项目:

Dog1
Cat1
Dog2

你按狗过滤,你的阅读限制是 2,然后你得到以下结果集:

Dog1

发电机响应还将提供 LastEvaluatedKay,这是您表上最后读取的主键。在您的下一个结果中将此 LastEvaluatedKay 设置为 ExclusiveStartKey。这是一个类似的example of pagination loop for dynamo(在 java 中)。

【讨论】:

    【解决方案2】:

    你试过了吗

    .loadAll()
    

    文档不太清楚这是做什么的,但听起来很有希望。

    【讨论】:

      猜你喜欢
      • 2019-11-26
      • 2018-08-19
      • 2018-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多