如何使用 python 從 mongodb 中查找和洗掉重復檔案。我們共有 7 份檔案/記錄,其中 2 份檔案/記錄是重復的。所以需要找到那些重復的檔案/記錄并從同一個集合中洗掉。在檔案中,我們將有 100 個屬性,因此我們無法根據少數屬性找到檔案。我們需要準確的重復檔案/記錄
MongoDB 集合
[
{ 'name': 'Amy', 'address': 'Apple st 652', 'age': 34 },
{ 'name': 'Hannah', 'address': 'Mountain 21', 'age': 34 },
{ 'name': 'Hannah', 'address': 'Mountain 21', 'age': 34 },
{ 'name': 'Amy', 'address': 'Apple st 652', 'age': 34 },
{ 'name': 'Richard', 'address': 'Sky st 331', 'age': 34 },
{ 'name': 'Chuck', 'address': 'Main Road 989', 'age': 34 },
{ 'name': 'Viola', 'address': 'Sideway 1633', 'age': 34 },
];
輸出集合
[
{ 'name': 'Amy', 'address': 'Apple st 652' },
{ 'name': 'Hannah', 'address': 'Mountain 21' },
{ 'name': 'Richard', 'address': 'Sky st 331' },
{ 'name': 'Chuck', 'address': 'Main Road 989' },
{ 'name': 'Viola', 'address': 'Sideway 1633' },
];
uj5u.com熱心網友回復:
您可以使用代表完整檔案和組的$$ROOT,如下所示:
db.collection.aggregate([
{
$project: {
_id: 0,
}
},
{
$group: {
_id: "$$ROOT"
}
},
{
$replaceRoot: {
newRoot: "$_id"
}
}
])
如您所見,我們必須洗掉該_id欄位,因為它是唯一的并且會破壞方法,另外需要考慮的一點是這會將整個集合加載到記憶體中。如果您的機器無法處理它,您別無選擇,只能合并代碼并對集合進行分頁。
uj5u.com熱心網友回復:
db.dup_doc.aggregate([
{
$project: {
_id: 0,
"name":"$name"
}
},
{
$group: {
_id: "$$ROOT"
}
},
{
$replaceRoot: {
newRoot: "$_id"
}
},
{ $out: 'dup_doc' }
])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/467816.html
