仅当计算属性与某些条件匹配时,将计算属性添加到目标实体的最简单方法是什么?
给出以下输入实体:
{
"_id": "foo",
"bar": 5
"baz": 10
}
如果foobar
大于15,我想添加["+", "_S.bar", "_S.baz"]
。
答案 0 :(得分:0)
这是一种可以使用的模式(缺点是你必须否定条件并在首次添加可能感觉有点奇怪的属性后删除):
{
"_id": "x",
"type": "pipe",
"source": {
"type": "embedded",
"entities": [{
"_id": "foo",
"bar": 5,
"baz": 10
}]
},
"transform": {
"type": "dtl",
"rules": {
"default": [
["add", "foobar", ["+", "_S.bar", "_S.baz"]],
["if",
["not", ["gt", "_T.foobar", 15]],
["remove", "foobar"]
]
]
}
}
}
答案 1 :(得分:0)
另一种方法是将计算属性添加为临时变量,如下所示:
{
"_id": "x",
"type": "pipe",
"source": {
"type": "embedded",
"entities": [{
"_id": "foo",
"bar": 5,
"baz": 10
}]
},
"transform": {
"type": "dtl",
"rules": {
"default": [
["add", "_tmp_foobar", ["+", "_S.bar", "_S.baz"]],
["if",
["gt", "_T._tmp_foobar", 15],
["add", "foobar", "_T._tmp_foobar"]
]
]
}
}
}
_tmp_foobar
属性在持久保存到数据集时将被删除,因为它以下划线开头,可以有效地用作临时属性。