RethinkDB Node.js - 使用另一个对象从文档中的每个字段中减去值

RethinkDB Node.js - Subtract values from each field in a document, using another object

给定一个 table,其中包含如下所示的对象:

{
  someString: 'something',
  foo: 100,
  bar: 53,
  baz: 230,
  ignore: 'everything but numbers'
}

和给定的 JSON 仅包含数字值的对象:

{
  foo: 20,
  bar: 15,
  baz: 100
}

我需要一个 ReQL 查询来从所选文档中的值中减去给定 JSON 对象中的所有值。但是,问题是我不知道给定的 JSON 对象中有哪些字段,它可能包含一个、全部或 none 个数字字段(它永远不会包含非数字字段,或根本不在原始 table 中的字段)。

我知道我可以轻松地获取有问题的文档并自己减去值并使用新值更新文档,但这些值在不断变化。因此,如果我这样做,那么值可能会在获取文档和更新文档之间发生变化,从而导致插入不正确的值。所以我想在查询中做实际的减法。

r.db("db").table("table").get("id")
  .update({
    "foo":r.row("foo").sub(20),
    "bar":r.row("bar").sub(15),
    "baz":r.row("baz").sub(100)
  })  

然后,您可以根据给定 JSON 对象中的值修改代码中的此更新。