我有一个用户表,其主键为UserId。这对于所有用户或某些用户的请求都很有用,但在我的情况下,我希望按降序获得具有大于某个值的lastActivity属性(这是一个数字)的所有用户。
当我查看文档时,您似乎只能根据主索引进行查询,但是您可以提供一个FilterExpression
属性来过滤扫描结果并返回它们,但这不是按升序排列。
我有什么遗漏,或者正在使用FilterExpressions
我必须这样做的方式吗?例如,如果我的应用程序拥有10000个用户,但在给定时间内只有50个用户处于活动状态,这不会使我的查询效率极低吗?
答案 0 :(得分:1)
您可以在主键上添加var MapboxDirections = function () {
function MapboxDirections(options) {
_classCallCheck(this, MapboxDirections);
this.actions = (0, _redux.bindActionCreators)(actions, store.dispatch);
this.actions.setOptions(options || {});
this.options = options || {};
this.onDragDown = this._onDragDown.bind(this);
this.onDragMove = this._onDragMove.bind(this);
this.onDragUp = this._onDragUp.bind(this);
this.move = this._move.bind(this);
//this.onClick = this._onClick.bind(this);
}
的排序键。
答案 1 :(得分:1)
第一个选项,如Mark建议的那样,如果您在lastActivity(LSI或其他)上使用排序键,您将:
一个。将您的记录放在一个分区中,这样您就可以使用查询API。
湾记录多个分区键,您仍然需要使用Scan API。
另一种选择是使用GSI。如果将分区键设置为lastActivity,则只有当lastActivity属性存在时,记录才会出现在GSI中。
第三个选项是使用Streams + Lambda将用户复制到另一个表,该表具有更适合您查询的Key Schema,并且可能使用TTL来清理用户,请记住,TTL删除是最好的努力(通常在48小时内)
HTH
Abhaya