可以通过某种方式通过存储在同一对象中的键名过滤结果吗?
我有JSON对象“ keys”,在属性“ default”中存储了我需要的对象的密钥。可以像这样keys[keys.default].type = some_type
进行过滤吗?
var params = {
TableName: 'TABLE_NAME',
IndexName: 'TABLE_INDEX', // optional (if querying an index)
KeyConditionExpression: 'myId = :value',
FilterExpression: '#kmap[#kmap.#def].#tp = :keyval',
ExpressionAttributeNames: {names with special characters
'#kmap': 'keys',
'#tp': 'type',
'#def': 'default'
},
ExpressionAttributeValues: { // a map of substitutions for all attribute values
':value': '1',
':keyval': 'some_type'
},
Limit: 10, // optional (limit the number of items to evaluate)
ProjectionExpression: "displayName, #kmap",
ReturnConsumedCapacity: 'TOTLAL', // optional (NONE | TOTAL | INDEXES)
};
docClient.query(params, function(err, data) {
if (err) ppJson(err); // an error occurred
else ppJson(data); // successful response
});
答案 0 :(得分:0)
我很确定答案是否定的。
据我所知,这个keys[keys.default]
甚至不是有效的json。
当然,您可以分两个步骤进行操作:
别忘了,过滤器会严格应用于结果集-仍然需要查询或扫描操作所指定的遍历遍历。
因此,您可以更轻松地在客户端上运行查询。
最后,如果这是ypu需要执行的典型查询,则作为优化,您可以将默认键和值提升为该项目的顶级属性。然后,您实际上可以在该属性上创建GSI并可以进行有效的查找。