Amazon web services 基于链接id的递归扫描表
我在DynamoDB有一张桌子,就像下面的一张一样。id是主键,链接的id是辅助索引Amazon web services 基于链接id的递归扫描表,amazon-web-services,amazon-dynamodb,Amazon Web Services,Amazon Dynamodb,我在DynamoDB有一张桌子,就像下面的一张一样。id是主键,链接的id是辅助索引 id|value|linked_id 1 | one | #NULL 8 | two | #NULL 2 | two | 1 6 | two | 8 3 | two | 2 是否可以在DynamoDB中进行查询/扫描,以递归方式获取所有父项? 例如,当我传递id 3时,它返回第3行,然后返回第2行,因为linked_id不是空的,我们有一个id为2的行,它等于第3行的linked_id 如果链接的_id为#N
id|value|linked_id
1 | one | #NULL
8 | two | #NULL
2 | two | 1
6 | two | 8
3 | two | 2
是否可以在DynamoDB中进行查询/扫描,以递归方式获取所有父项?
例如,当我传递id 3时,它返回第3行,然后返回第2行,因为linked_id不是空的,我们有一个id为2的行,它等于第3行的linked_id
如果链接的_id为#NULL-停止查询。我将SQL查询与子查询一起使用,但这需要花费很长时间
UPD 1。结果必须如下
id|value|linked_id
1 | one | #NULL
2 | two | 1
3 | two | 2
谢谢假设表名为ABC,我们有一个dbModel来查询/扫描表
function main(id){
return ABC.getItems(id)
.pipe(getChild.bind(null)
.execute();
}
function getChild(queryResult, next){
if(!queryResult.items.length) return;
return Promise.map(queryResult.items, item =>{
return ABC.getItems(item.linked_id).execute().then((res)=>allValues.push(res.items));
})
.then(()=> next());
}
您可以使用
.pipe
链接查询。虽然我很难理解这个问题。当我们使用链接的_id:2进行查询时,为什么要返回第1行或第2行?