MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

encontre o primeiro dos documentos para cada valor distinto para um campo


Você precisa executar uma operação agregada que agrupe todos os documentos por field3 e use o $first acumulador com o $$ROOT variável do sistema para trazer o primeiro documento, algo como o seguinte:
db.myCollection.aggregate([
    {
        "$group": {
            "_id": "$field3",
            "doc": { "$first": "$$ROOT" }
        }
    }
])

ou para uma saída exata:
db.myCollection.aggregate([
    {
        "$group": {
            "_id": "$field3",
            "field1": { "$first": "$field1" },
            "field2": { "$first": "$field2" }
        }
    },
    {
        "$project": {
            "_id": 0,
            "field3": "$_id",
            "field2": 1,
            "field1": 1
        }
    }
])