【发布时间】:2017-11-20 11:14:06
【问题描述】:
我想将 3 个集合的结果合并到一个集合中,但我无法合并最终结果的 finishedStatus 属性。
最终结果集合:
- 仅包含唯一状态
- 每个文档都可以保留使该状态的机器
- 合并finishedStatus,然后求和finishedStatus.count
- (可选)排序完成状态[*].status
给定
集合 A
{"status": ["1","2","3"], "machine": "A", "finishedStatus": [{"status": "4", "count": 10}, {"status": "5", "count": 1}]}
{"status": ["4","5","6"], "machine": "A", "finishedStatus": [{"status": "3", "count": 5}, {"status": "5", "count": 11}]}
集合 B
{"status": ["1","2","3"], "machine": "B", "finishedStatus": [{"status": "1", "count": 3}, {"status": "5", "count": 14}]}
{"status": ["2","5","2"], "machine": "B", "finishedStatus": [{"status": "5", "count": 5}, {"status": "3", "count": 5}]}
集合 C
{"status": ["2","5","2"], "machine": "C", "finishedStatus": [{"status": "5", "count": 2}, {"status": "3", "count": 5}]}
{"status": ["3","2","1"], "machine": "C", "finishedStatus": [{"status": "2", "count": 6}, {"status": "4", "count": 7}]}
采集结果
{"status": ["1","2","3"], "machine": ["A", "B"] , "finishedStatus": [{"status": "1", "count": 3}, {"status": "4", "count": 10}, {"status": "5", "count": 15}]}
{"status": ["2","5","2"], "machine": ["B", "C"], "finishedStatus": [{"status": "5", "count": 7}, {"status": "3", "count": 10}]}
{"status": ["3","2","1"], "machine": ["C"], "finishedStatus": [{"status": "2", "count": 6}, {"status": "4", "count": 7}]}
{"status": ["4","5","6"], "machine": ["A"], "finishedStatus": [{"status": "3", "count": 5}, {"status": "5", "count": 11}]}
如何编写 AQL INSERT/UPDATE/UPSERT 来做出最终结果?
这是我的 AQL
FOR doc IN A
UPSERT {"status": doc.status}
INSERT {"status": doc.status, "machine": [doc.machine], "finishedStatus": doc.finishedStatus}
UPDATE {
"machine": APPEND(OLD.machine, doc.machine, true),
"finishedStatus": <-- I cannot write AQL to update finishedStatus
How to write AQL to update this property?
}
IN result
谢谢
【问题讨论】: