как мне удалить дубликаты записей между записями

#mongodb

#mongodb

Вопрос:

У меня есть MongoDB, как

 {"currency_type":"alchemy", "currency_value": "0.13", "created_on": "1605975144322"}
{"currency_type":"alchemy", "currency_value": "0.13", "created_on": "1605975144322"}
{"currency_type":"alchemy", "currency_value": "0.14", "created_on": "1605975144322"}
{"currency_type":"alchemy", "currency_value": "0.14", "created_on": "1605975144322"}
{"currency_type":"alchemy", "currency_value": "0.16", "created_on": "1605975144322"}
{"currency_type":"alchemy", "currency_value": "0.16", "created_on": "1605975144322"}
{"currency_type":"alchemy", "currency_value": "0.16", "created_on": "1605975144322"}
{"currency_type":"alchemy", "currency_value": "0.13", "created_on": "1605975144322"}
  

и вот как должен выглядеть запрос

 {"currency_type":"alchemy", "currency_value": "0.13", "created_on": "1605975144322"}
{"currency_type":"alchemy", "currency_value": "0.14", "created_on": "1605975144322"}
{"currency_type":"alchemy", "currency_value": "0.16", "created_on": "1605975144322"}
{"currency_type":"alchemy", "currency_value": "0.13", "created_on": "1605975144322"}
  

Я пробовал что-то подобное, но он удаляет все записи с одинаковым значением. Я хочу удалить только те записи, которые дублируются в строке.

 DB.objects.aggregate([
            {"$match": {"currency_type": "alchemy"}},     
            {"$group": {
                "_id": {
                    "currency_value": "$currency_value"                
                },
                "created_on": {"$first": "$created_on"},
                "data": {"$first": "$$ROOT"},
                "count": {"$sum": 1}                 
            }},
            {"$sort":{ "created_on" : 1 }}
        ])
  

Есть идеи, в каком направлении я могу пойти?
Спасибо!!

Ответ №1:

вы можете получить максимальное или минимальное значение _id для сохранения или удаления:

 DB.objects.aggregate([
            {"$match": {"currency_type": "alchemy"}},     
            {"$group": {
                "_id": {
                    "currency_value": "$currency_value"                
                },
                "created_on": {"$first": "$created_on"},
                "data": {"$first": "$$ROOT"},
                "count": {"$sum": 1},
                "maxId": {$max:"$_id"}
            }},
            {"$sort":{ "created_on" : 1 }}
        ])