【问题标题】:How to find duplicates documents?如何查找重复文件?
【发布时间】:2020-06-30 10:47:46
【问题描述】:

很奇怪,我没有在文档中找到答案,这里是一个非常简单的问题。如何在集合中查找重复记录。例如,我需要为下一个文档查找由id 重复的内容:

{"id": 1, name: "Mike"},
{"id": 2, name: "Jow"},
{"id": 3, name: "Piter"},
{"id": 1, name: "Robert"}

我需要查询将返回两个具有相同 ID 的文档(在我的情况下为id: 1)。

【问题讨论】:

  • 你能详细说明一下吗?查询的结果应该是什么?只是重复的ID?包含重复 ID 的完整文档?

标签: arangodb aql


【解决方案1】:

看看 COLLECT AQL 命令,它可以返回包含重复值的文档的计数,例如您的 id 键。

ArangoDB AQL - COLLECT

您可以在 AQL 中大量使用 LET 来帮助将查询分解为更小的步骤,并在以后的查询中处理输出。

也可以将其全部折叠到一个查询中,但这种技术有助于将其分解。

LET duplicates = (
    FOR d IN myCollection
    COLLECT id = d.id WITH COUNT INTO count
    FILTER count > 1
    RETURN {
        id: id,
        count: count
    }
)

FOR d IN duplicates
FOR m IN myCollection
FILTER d.id == m.id
RETURN m

这将返回:

[
  {
    "_key": "416140",
    "_id": "myCollection/416140",
    "_rev": "_au4sAfS--_",
    "id": 1,
    "name": "Mike"
  },
  {
    "_key": "416176",
    "_id": "myCollection/416176",
    "_rev": "_au4sici--_",
    "id": 1,
    "name": "Robert"
  }
]

【讨论】:

  • 我已经看过了,但不明白它如何帮助找到重复项
  • 你可以在 .id 键上添加一个索引,这将加快它的速度
猜你喜欢
  • 2013-11-14
  • 2021-11-28
  • 2022-07-06
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
  • 2017-01-25
  • 1970-01-01
  • 2013-04-07
相关资源
最近更新 更多