如何查找重复文件?
How to find duplicates documents?
很奇怪我没有在文档和这里找到一个非常简单的问题的答案。如何查找集合中的重复记录。例如,我需要为下一个文档找到 id
的重复项:
{"id": 1, name: "Mike"},
{"id": 2, name: "Jow"},
{"id": 3, name: "Piter"},
{"id": 1, name: "Robert"}
我需要查询 return 两个具有相同 ID 的文档(在我的例子中是 id: 1
)。
看看 COLLECT AQL 命令,它可以 return 包含重复值的文档的数量,例如您的 ID 键。
您可以在 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
这将 return:
[
{
"_key": "416140",
"_id": "myCollection/416140",
"_rev": "_au4sAfS--_",
"id": 1,
"name": "Mike"
},
{
"_key": "416176",
"_id": "myCollection/416176",
"_rev": "_au4sici--_",
"id": 1,
"name": "Robert"
}
]
很奇怪我没有在文档和这里找到一个非常简单的问题的答案。如何查找集合中的重复记录。例如,我需要为下一个文档找到 id
的重复项:
{"id": 1, name: "Mike"},
{"id": 2, name: "Jow"},
{"id": 3, name: "Piter"},
{"id": 1, name: "Robert"}
我需要查询 return 两个具有相同 ID 的文档(在我的例子中是 id: 1
)。
看看 COLLECT AQL 命令,它可以 return 包含重复值的文档的数量,例如您的 ID 键。
您可以在 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
这将 return:
[
{
"_key": "416140",
"_id": "myCollection/416140",
"_rev": "_au4sAfS--_",
"id": 1,
"name": "Mike"
},
{
"_key": "416176",
"_id": "myCollection/416176",
"_rev": "_au4sici--_",
"id": 1,
"name": "Robert"
}
]