Как отсортировать asc по дате создания в Dynamodb с помощью documentClient

Я просто хочу спросить вас, как я могу получить самые новые элементы, отсортированные по ASC по дате создания.

const getItems = async (limit) => {
  const params = {
    TableName,
    KeyConditionExpression: '#field = :value',
    ExpressionAttributeNames: {
      '#field': 'pk',
    },
    ExpressionAttributeValues: {
      ':value': 'ITEM'
    },
    Limit: 3,
    ScanIndexForward: true, // I think that it will sort by date, but it's probably sorting by pk...
  };

  return results.Items;
};

Как я могу получить 3 новейших созданных элемента с помощью Dynamodb documentClient?

Спасибо за помощь!

1 ответ

Решение

Типичное решение, предполагающее, что вам нужен элемент с самой последней датой независимо от других атрибутов, состоит в создании глобального вторичного индекса с составным первичным ключом, где ключ раздела является постоянным значением, а ключ сортировки - соответствующим атрибутом даты.

Затем вы можете сделать запрос к GSI с помощью:

  • ключ раздела = постоянное значение
  • ScanIndexForward = false (для сортировки по убыванию)
  • Предел = 1 (для получения только 1 элемента)

Если вам нужна последняя запись данного типа, то ключ раздела в вашем запросе будет значением типа.

Другие вопросы по тегам