【问题标题】:Merge documents by fields按字段合并文档
【发布时间】:2020-06-23 14:22:30
【问题描述】:

我有两种类型的文档。主要文档和附加信息。

{
 "id": "371"
 "name": "Mike",
 "location": "Paris"
},
{
 "id": "371-1",
 "age": 20,
 "lastname": "Piterson"
}

我需要通过id 合并它们,以获得结果文档。结果应如下所示:

{
 "id": "371"
 "name": "Mike",
 "location": "Paris"
 "age": 20,
 "lastname": "Piterson"
}

【问题讨论】:

  • 您能详细说明一下吗?您可以将对象与MERGE() 合并,但您到底想做什么/有什么问题?

标签: arangodb


【解决方案1】:

使用COLLECT / INTOSPLIT()MERGE()

FOR doc IN collection
    COLLECT id = SPLIT(doc.id, '-')[0] INTO groups
    RETURN MERGE(MERGE(groups[*].doc), {id})

结果:

[
  {
    "id": "371",
    "location": "Paris",
    "name": "Mike",
    "lastname": "Piterson",
    "age": 20
  }
]

这将:

  1. 在任意- 处拆分每个id 属性并返回第一部分
  2. 将结果分组到单独的数组中 (groups)
  3. 合并 #1:将所有对象合并为一个
  4. 合并 #2:将id 合并到结果中

有关写入操作,请参阅 REMOVE & INSERT or REPLACE

【讨论】:

  • 不错的解决方案。您可以将FOR group IN groups RETURN group.doc 写成groups[*].doc 以使其更易于阅读。
  • 感谢您指出这一点,我已经更新了答案
猜你喜欢
  • 1970-01-01
  • 2019-11-03
  • 2015-05-03
  • 1970-01-01
  • 1970-01-01
  • 2020-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多