gpt4 book ai didi

node.js - 在 ConditionalOperator 设置为 OR 的情况下扫描 DynamoDB 仍执行 AND

转载 作者:太空宇宙 更新时间:2023-11-04 01:04:48 25 4
gpt4 key购买 nike

根据 API Docs我有以下扫描参数:

var params = {
"TableName": "MyTable",
"ScanFilter": {
"id": {
"AttributeValueList": [
{
"S": "ID-A"
},
{
"S": "ID-D"
}
],
"ComparisonOperator": "IN"
},
"facilityName": {
"AttributeValueList": [
{
"S": "Name A"
}
],
"ComparisonOperator": "IN"
}
},
"ConditionalOperator": "OR"
};
dynamo.scan(params, function (err, data) {
if (err) {
console.log(err, err.stack);
} else {
console.log(JSON.stringify(data, null, 2));
}
});

无论 ConditionalOperator 字段中的值如何,扫描始终执行AND。我做错了什么?

我希望使用OR看到ID-A、ID-C和ID-D。我只获得过 ID-D。

如果我进行普通扫描或扫描,没有 ScanFilter 设置,这就是数据:

{
"Count": 4,
"ScannedCount": 4,
"Items": [
{
"facilityName": {
"S": "Name B"
},
"id": {
"S": "ID-A"
}
},
{
"facilityName": {
"S": "Name B"
},
"id": {
"S": "ID-B"
}
},
{
"facilityName": {
"S": "Name A"
},
"id": {
"S": "ID-C"
}
},
{
"facilityName": {
"S": "Name A"
},
"id": {
"S": "ID-D"
}
}
]
}

最佳答案

我能够使用 Java SDK 来完成您想要的操作:

public static void test() {
ScanRequest scanRequest = new ScanRequest("MyTable");
scanRequest.setConditionalOperator(ConditionalOperator.OR);

Map<String, Condition> scanFilter = new HashMap<String, Condition>();

Condition idFilter = new Condition().withComparisonOperator(ComparisonOperator.IN).withAttributeValueList(new AttributeValue("ID-A"), new AttributeValue("ID-D"));
Condition facilityNameFilter = new Condition().withComparisonOperator(ComparisonOperator.IN).withAttributeValueList(new AttributeValue("Name A"));

scanFilter.put("id", idFilter);
scanFilter.put("facilityName", facilityNameFilter);

scanRequest.setScanFilter(scanFilter);

ScanResult scanResult = dynamo.scan(scanRequest);
for(Map<String, AttributeValue> item : scanResult.getItems()) {
System.out.println(item);
}

}

我不熟悉您使用的 JS SDK。但你的代码看起来没问题。看js时doc ,我注意到ConditionalOperator是2012版本中引入的,2011版本中没有。

您能否验证您使用的是 12 版本吗?

关于node.js - 在 ConditionalOperator 设置为 OR 的情况下扫描 DynamoDB 仍执行 AND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24130158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com