我有以下数据结构:
壁
{
slug: "wall-slug",
nodes: {
"node1": "id-from-nodes-table-1",
"node2": "id-from-nodes-table-2"
}
}
Run Code Online (Sandbox Code Playgroud)
节点
{
id: "id-from-nodes-table-1",
something: "something"
}
Run Code Online (Sandbox Code Playgroud)
尝试以这种方式将来自节点表的文档合并到wall表中的节点对象中的明确节点:
r.db("test").table("walls").getAll("wall-slug", {index: "slug"}).map(function(row) {
return row.merge({nodes: row("nodes").map(function(node) {
return r.db("test").table("nodes").get(node);
})});
})
Run Code Online (Sandbox Code Playgroud)
它应该看起来像这样:
{
slug: "wall-slug",
nodes: {
"node1": {object from nodes table got by value from this property},
"node2": {object from nodes table got by value from this property}
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到"无法将OBJECT转换为SEQUENCE"消息 - 找不到迭代节点对象属性的方法,并用另一个表中的对象替换它的属性值 - 是否有?
我在我的项目中使用RethinkDB并具有以下表结构:
data_item {
id: "generated_thing",
slug: "slug"
}
aggregation_of_data_items {
items: ["some", "ids", "from", "data_item", "table"]
}
Run Code Online (Sandbox Code Playgroud)
当我从内容表中删除项目时,我希望保持数据一致 - 从aggregation_of_data_items.items数组中删除ID - 是否有机会在一个请求中执行此操作(类似于MongoDB中的$ pull或$ pullAll)?
我想在更新失败时插入新文档 - 有没有办法做到这一点?现在RethinkDB只允许我在插入命令中通过{upsert:true}更新插入失败的文档.
rethinkdb ×3