我正在尝试与 Rethinkdb 一起使用 mapreducing 类似的东西:
[{"a":1, "b":2}, {"a":3}, {"c":4}]
to {"a":[1,3], "b":[2], "c":[4]}
.
我已经咨询过Javascript:如何将对象数组转换为具有排序唯一数组的对象?但是这些语句在 ReQL 中并不能真正起作用,这里有一个例子:
r.expr([{"a":1, "b":2}, {"a":3}, {"c":4}]).do(function(user){
var c1 = {};
var keys = ["a", "b", "c"];
user.map(function(itm){
keys.map(function(p){
if(!c1[p]){
c1[p] = [];
};
c1[p] = r.expr(c1[p]).setInsert(itm(p).default("NIL"));
});
return 1
});
return c1
});
但这在 itm(p) 上出现错误并出现错误:RqlCompileError: Variable name not found in:
RqlCompileError: Variable name not found in:
r([{a: 1, b: 2}, {a: 3}, {c: 4}]).do(function(var_136) { return {a: r([]).setInsert(var_137("a").default("NIL")), b: r([]).setInsert(var_137("b").default("NIL")), c: r([]).setInsert(var_137("c").default("NIL"))}; })
^^^^^^^
因为 rethinkdb 将变量 id(在本例中为 137)分配给未事先声明的 itm(p)。
有什么想法我该怎么做?
谢谢