[LARAVEL] MongoDB find duplicate row - fourslickz/notes GitHub Wiki
use App\Models\YourModel;
use Illuminate\Support\Facades\DB;
$duplicates = YourModel::raw(function($collection) {
return $collection->aggregate([
[
'$group' => [
'_id' => '$field_name', // or use ['field1' => '$field1', 'field2' => '$field2'] for multiple fields
'count' => ['$sum' => 1],
'docs' => ['$push' => '$$ROOT']
]
],
[
'$match' => [
'count' => ['$gt' => 1]
]
]
]);
});
foreach ($duplicates as $duplicate) {
$docs = $duplicate->docs;
array_shift($docs); // Keep the first document and remove it from the array
foreach ($docs as $doc) {
YourModel::where('_id', $doc->_id)->delete(); // Delete the remaining duplicate documents
}
}
echo "Removed duplicates successfully.";