我用Java编写了以下Aerospike过滤器。字段 1
和字段 2
都是布尔值。由于某种原因,“filterByField.ValidBoth”条件不会产生 true,尽管记录与条件匹配。
由于它是一个布尔值,所以我使用 1 表示真,0 表示假。
我错过了什么吗?
public Exp getFilterByFieldFilter(FilterByField filterByField) {
if (filterByField == null || "".equals(filterByField)) {
return Exp.val(true);
}
if (filterByField == filterByField.All) {
return Exp.val(true);
} else if (filterByField == filterByField.ValidBoth) {
return Exp.and(Exp.eq(Exp.intBin("Field1"), Exp.val(0)),
Exp.eq(Exp.intBin("Field2"), Exp.val(0)));
}
}
从我通过 AQL 从数据库结果中看到的情况来看,那些未设置为 true 的结果不会反映在结果集中。
我应该编写我的过滤器是检查这种情况的不同方法吗?如果是这样,这种情况会是什么样子?
我尝试检查 Exp.val(NULL),但出现错误。
这是我通过 AQL 设置的数据库结果集
[
{
"PK": "1",
"Name": "ABC",
"Field1": 1,
"Field2": 1
},
{
"PK": "2",
"Name": "EFG",
"Field1": 1
},
{
"PK": "3",
"Name": "XYZ",
}
]
如果 bin 名称 Field1 和 Field2 包含布尔值,则应以这种方式构造表达式(无论所需的逻辑是什么):
Exp.eq(Exp.boolBin("Field1"), Exp.val(false))
我测试了下面的结构,似乎对我有用:
WritePolicy wPolicy = new WritePolicy();
Bin b1 = new Bin("Field1", Value.get(0));
Bin b2 = new Bin("Field2", Value.get(0));
Bin b3 = new Bin("Data", Value.get("data"));
wPolicy.recordExistsAction = RecordExistsAction.REPLACE;
client.put(wPolicy, key, b1, b2, b3);
//client.put(wPolicy, key, b1, b3);
Exp condFilter = Exp.and(
Exp.eq(Exp.intBin("Field1"),Exp.val(0) ),
Exp.eq(Exp.intBin("Field2"),Exp.val(0) )
);
Policy policy = new Policy();
policy.filterExp = Exp.build(condFilter);
Record record = client.get(policy, key);
System.out.println("Read back the record.");
System.out.println("Record values are:");
System.out.println(record);
//Get record without filter condition
record = client.get(null, key);
System.out.println(record);
有效条件:
Read back the record.
Record values are:
(gen:18),(exp:0),(bins:(Field1:0),(Field2:0),(Data:data))
(gen:18),(exp:0),(bins:(Field1:0),(Field2:0),(Data:data))
无效条件(无字段 2 箱):
Read back the record.
Record values are:
null
(gen:19),(exp:0),(bins:(Field1:0),(Data:data))
我有一个包含特殊字符的字符串列表 它像这样工作得很好 输出 安得拉邦 卡纳塔克邦 当我使用过滤器来做这件事时 它不起作用!我把名单原封不动地拿回来了。 我期待着这样一份清单['Andhra Pradesh','Karnataka'] 我希望从字符串列表中删除特殊字符,如,和
问题内容: 根据http://www.elastic.co/guide/zh-cn/elasticsearch/guide/master/combining- filters.html 上的elasticsearch文档,布尔过滤器可以是以下内容: 在含义上,它等效于以下逻辑运算: 这样对吗? 谢谢! 问题答案: 正如Andrei在评论中指出的,这是对 过滤器 的正确理解: 可以翻译成 可以翻译成
过滤表达式 mitmproxy工具中的许多命令都使用过滤器表达式。过滤器表达式由以下运算符组成: 命令 描述 〜a 匹配响应资源:CSS,Javascript,Flash,images。 〜b regex Body 〜bq regex 请求的Body 〜bs regex 响应的Body 〜c int HTTP响应码 〜d regex 域名 〜dst regex 匹配目标地址 〜e 匹配错误 〜h
问题内容: 以下HTML,Javascript和JSON可以正确呈现,但该过滤器根本不起作用。我们做错了什么? Javascript: 这两个JSON: api / distributors / my: api /仪表板/目录 问题答案: 角度过滤器无法将对象的对象作为输入。ng- repeat可以渲染它们,但是过滤器需要一个对象数组。解决此问题的最简单方法是让服务器返回没有命名键的数组。您还
问题内容: 我如何布尔计算包含布尔表达式的字符串?喜欢: 用户应该能够定义自己的变量(),并定义自己的布尔表达式()。因此,我将所有表达式仅作为字符串使用。我如何评估它们? 问题答案: 您可以使用Nambari评论的ScriptEngine: 打印0。 还要注意,该表达式不是布尔表达式,而是按位运算。
我开始学习布尔表达式。我正试图找出以下问题: 假设age1、age2和age3是int变量,假设答案是布尔变量。编写一个表达式,当age1小于或等于age2并且age2小于或等于age3时,该表达式将答案指定为true。否则答案应为false。 我已经尝试了一些东西,但对Java来说还是比较陌生的。我能把答案打印出来,但我的数字还是有问题。 这是错误的: 我只是不知道如何解决这个问题,或者代码中到
我有两个实体:类别和具有一对多关系的产品。 如果价格大于100,我如何按产品数量订购类别?类似(这不起作用):