如何使用 dynamodb 中的数组元素查找整个数组?
how to find the whole array using the array's element in dynamodb?
在 DB 中有一个属性(名称“user_ids”),其形式为包含用户 ID [a, b, c, d...] 的数组。我想使用单个用户 ID 搜索整个数组。
不幸的是,在这种情况下,您必须扫描整个 table。 DDB 未针对此类操作进行优化。
var params = {
TableName: 'my-table-name',
FilterExpression: "#users = :id",
ExpressionAttributeNames: {
"#users": "users"
},
ExpressionAttributeValues: {
":id": ["KwV-yfctBcwCHIw="] // user-id
}
};
dynamo.scan(params, (err, data) => {
if (err) console.error({ err });
console.log(data); // output -> { 'room-id': 'group-2', link: 'asdf', users: ["KwV-yfctBcwCHIw=", "Kqc-wfctacwCsww=", "lqw-yfftBcwqwIw="] },
})
是的,您可以使用 filterexpression 执行此操作,这取决于您存储数据的方式。
要么是“文档类型”(List/Map)要么是集合,只需尝试 filterexpression
您可以参考初始 aws documentation 或参考大量在线示例。
请参考这个 link... 有一些示例代码。
在 DB 中有一个属性(名称“user_ids”),其形式为包含用户 ID [a, b, c, d...] 的数组。我想使用单个用户 ID 搜索整个数组。
不幸的是,在这种情况下,您必须扫描整个 table。 DDB 未针对此类操作进行优化。
var params = {
TableName: 'my-table-name',
FilterExpression: "#users = :id",
ExpressionAttributeNames: {
"#users": "users"
},
ExpressionAttributeValues: {
":id": ["KwV-yfctBcwCHIw="] // user-id
}
};
dynamo.scan(params, (err, data) => {
if (err) console.error({ err });
console.log(data); // output -> { 'room-id': 'group-2', link: 'asdf', users: ["KwV-yfctBcwCHIw=", "Kqc-wfctacwCsww=", "lqw-yfftBcwqwIw="] },
})
是的,您可以使用 filterexpression 执行此操作,这取决于您存储数据的方式。 要么是“文档类型”(List/Map)要么是集合,只需尝试 filterexpression
您可以参考初始 aws documentation 或参考大量在线示例。
请参考这个 link... 有一些示例代码。