Devolver valores únicos en MongoDB

Tahseen Tauseef 20 junio 2023
  1. la función distinct() en MongoDB
  2. Utilice la función distinct() para devolver valores únicos
  3. Devolver valores únicos o distintos para un campo en MongoDB
  4. Devolver valores únicos para un campo incrustado en MongoDB
  5. Devolución de valores únicos para un campo de matriz incrustado
Devolver valores únicos en MongoDB

En este artículo, abordaremos cómo devolver valores únicos usando el método distinct() de MongoDB. Además, también se analiza la devolución de valores únicos en matrices y campos.

En MongoDB, es posible que desee representar o devolver valores únicos a veces, y puede lograrlo utilizando el método distinct().

El método distinct() produce una matriz de valores distintos para un campo dado en todas las colecciones o vistas en una sola colección o vista y lo ayuda a devolver valores únicos para un campo especificado en el shell de mongo.

la función distinct() en MongoDB

Sintaxis:

db.collection.distinct(field, query, options)

En MongoDB, la función debe tener dos parámetros necesarios llamados campo y operador de consulta. El parámetro de campo es un campo en el que desea que el método distinct() obtenga los valores únicos.

El parámetro de consulta especifica los documentos de los que se deben obtener los distintos valores. Puede enviar a la función un parámetro de opciones de garantía.

Tenga en cuenta que si el valor del campo especificado es una matriz, distinct() trata cada elemento de la matriz como un valor separado. Por ejemplo, si un campo tiene el valor [10, [10], 10], distinct() trata 10, [10] y 10 como valores separados.

Utilice la función distinct() para devolver valores únicos

Usemos la función distinct() para devolver valores únicos en MongoDB. La siguiente colección se usará para el primer ejemplo.

db.movies.find().pretty()
{
        "_id" : ObjectId("60322d3501cd70079c48cb65"),
        "title" : "Enchanted",
        "year" : 2006,
        "score" : 10,
        "rating" : "PG",
        "__v" : 0
}
{
        "_id" : ObjectId("60322d3501cd70079c48cb67"),
        "title" : "Final Destination II",
        "year" : 2015,
        "score" : 10,
        "rating" : "PG-13",
        "__v" : 0
}
{
        "_id" : ObjectId("6190189ef5c8903629012fe1"),
        "title" : "Fifty Shades of Grey",
        "year" : 2015,
        "score" : 10,
        "rating" : "NC-17",
        "__v" : 0
}

Devolver valores únicos o distintos para un campo en MongoDB

La colección de películas anterior devuelve valores únicos para el campo especificado en este ejemplo. Supongamos que desea valores únicos del campo de calificación.

Consulta:

db.movies.distinct( "rating" )
[ null, "", "NC-17", "PG", "PG-13"]

Después de usar la consulta anterior, la función distinct() lo ha ayudado con éxito a devolver valores únicos en MongoDB para una colección.

Devolver valores únicos para un campo incrustado en MongoDB

En este ejemplo, se muestra la devolución de valores únicos para un campo incrustado. Sin embargo, la colección utilizada en el ejemplo anterior no contenía campos incrustados.

Por lo tanto, se utilizará una nueva colección, como se muestra a continuación.

db.drones.find().pretty()
{
        "_id" : ObjectId("61673f46b34f185eb7b2bf0c"),
        "utility" : [
                "Natural Resource Exploration",
                "Remote sensing",
                "Real estate and construction",
                "Recreation",
                "Delivery"
        ],
        "onSale" : false,
        "name" : "Nimbari Gryphon Medeta 65",
        "price" : 77500,
        "weight" : "77 kilograms",
        "additionalDetails" : {
                "material" : "carbon fiber",
                "moreUses" : [
                        "Precision Agriculture",
                        "Land Inspection",
                        "Water Inspection",
                        "Cinematography"
                ]
        }
}
{
        "_id" : ObjectId("61673f46b34f185eb7b2bf0d"),
        "utility" : [
                "Natural Resource Exploration",
                "Remote sensing",
                "Real estate and construction",
                "Recreation",
                "Delivery"
        ],
        "onSale" : false,
        "name" : "X-Strimmer Eye",
        "price" : 23500,
        "weight" : "24 kilograms",
        "additionalDetails" : {
                "material" : "glass fiber",
                "moreUses" : [
                        "Precision Agriculture",
                        "Cinematography"
                ]
        }
}
{
        "_id" : ObjectId("61673f46b34f185eb7b2bf0e"),
        "utility" : [
                "Natural Resource Exploration",
                "Remote sensing",
                "Real estate and construction",
                "Recreation",
                "Delivery"
        ],
        "onSale" : false,
        "name" : "Khai Balemosh Shefqa TRX",
        "price" : 120500,
        "weight" : "80 kilograms",
        "additionalDetails" : {
                "material" : "aluminum",
                "moreUses" : [
                        "Precision Agriculture",
                        "Land Inspection"
                ]
        }
}

La siguiente consulta puede devolver valores únicos de todos los campos incrustados de la colección de base de datos anterior.

Consulta:

db.drones.distinct( "additionalDetails.material" )
[ "aluminum", "carbon fiber", "glass fiber"]

Devolución de valores únicos para un campo de matriz incrustado

Usando la función distinct(), puede usar la misma colección anterior para devolver valores únicos de un campo de matriz incrustado usando la función distinct().

Consulta:

db.drones.distinct( "additionalDetails.moreUses" )
["Cinematography","Land Inspection"]

En este artículo tutorial de MongoDB, se le brinda una vista detallada de distintas funciones con colecciones. La devolución de valores únicos en matrices y campos o campos incrustados también se explica con segmentos de código.

Artículo relacionado - MongoDB Query