ArangoDB 如何查找重复文档?

2ul0zpep  于 2022-12-09  发布在  Go
关注(0)|答案(1)|浏览(144)

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

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

我需要查询将返回两个具有相同id的文档(在我的例子中为id: 1)。

l5tcr1uw

l5tcr1uw1#

看一下COLLECTAQL命令,它可以返回包含重复值的文档的计数,例如您的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"
  }
]

相关问题