如果属性符合某些条件,则添加属性

时间:2018-02-27 11:32:40

标签: sesam

仅当计算属性与某些条件匹配时,将计算属性添加到目标实体的最简单方法是什么?

给出以下输入实体:

{
  "_id": "foo",
  "bar": 5
  "baz": 10
}

如果foobar大于15,我想添加["+", "_S.bar", "_S.baz"]

2 个答案:

答案 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属性在持久保存到数据集时将被删除,因为它以下划线开头,可以有效地用作临时属性。

相关问题