Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

188
Vistas
MongoDB: obtenga matrices con distintos

Estoy tratando de obtener todos los valores (que son matrices) del tipo "coordenada" en mis datos así:

 [ ["51.50064317423898","-0.09372711181640626"], ["51.48465408363687","-0.13149261474609378"] ]

Probé db. collections("mydb").distinct("coordinate") pero obtengo:

 [ '-0.09372711181640626', '-0.13149261474609378', '51.48465408363687', '51.50064317423898' ]

¿Alguien tiene una idea de cómo puedo tener todas mis matrices como quiero y no ordenadas en una matriz? "mydb" se ve así:

 { "name":"dfbfdbf", "coordinate":["51.50064317423898","-0.09372711181640626"], "rating":"8", "description":"geojzglijsen" }, { "name":"qzfgs", "coordinate":["51.48465408363687","-0.13149261474609378"], "rating":"5", "description":"femkndsmnk" }

¡Gracias!

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Si necesita obtener coordenadas distintas de su colección:

 mongos> db.a.find() { "_id" : ObjectId("619ea12e032deead586f3f91"), "name" : "dfbfdbf", "coordinate" : [ "51.50064317423898", "-0.09372711181640626" ] } { "_id" : ObjectId("619ea138032deead586f3f92"), "name" : "a", "coordinate" : [ "51.50064317423898", "-0.09372711181640626" ] } { "_id" : ObjectId("619ea14c032deead586f3f93"), "name" : "a", "coordinate" : [ "51.50064317423898", "-0.19372711181640626" ] } { "_id" : ObjectId("619ea157032deead586f3f94"), "name" : "a", "coordinate" : [ "51.50064317423898", "-0.09372711181640626" ] } { "_id" : ObjectId("619ea15b032deead586f3f95"), "name" : "a", "coordinate" : [ "52.50064317423898", "-0.09372711181640626" ] } { "_id" : ObjectId("619ea160032deead586f3f96"), "name" : "a", "coordinate" : [ "52.50064317423898", "-0.09372711181640626" ] } mongos> db.a.aggregate([ { $addFields:{coordinates:{$reduce:{ input: {$slice:["$coordinate",1,{$size:"$coordinate"} ]},initialValue:{$arrayElemAt:["$coordinate",0]},in:{$concat:["$$value",";","$$this" ]} }} }} , { $group:{_id:"$coordinates" , cnt:{$sum:1}}} , { $project : { coordinate : { $split: ["$_id", ";"] } ,_id:0}} ]) { "coordinate" : [ "51.50064317423898", "-0.19372711181640626" ] } { "coordinate" : [ "51.50064317423898", "-0.09372711181640626" ] } { "coordinate" : [ "52.50064317423898", "-0.09372711181640626" ] } mongos>

Ejemplo: aquí

explicado: Eliminar coordenadas duplicadas de la colección

  1. cree nuevas coordenadas de campo donde une las coordenadas en una sola cadena
  2. agrupar las coordenadas para eliminar duplicados
  3. dividir las coordenadas a los valores originales.

Esta solución no tiene limitación de tamaño de resumen de matriz de coordenadas distintas de 16 MB también...

about 4 years ago · Juan Pablo Isaza Denunciar

0

Si he entendido correctamente, puede probar esta consulta agregada:

El punto es $group by null para obtener todos los valores y usar $addToSet que evita los valores duplicados.

 db.collection.aggregate([ { "$group": { "_id": null, "coordinate": { "$addToSet": "$coordinate" } } }, { "$project": { "_id": 0 } } ])

Ejemplo aquí donde he duplicado un objeto para ver cómo no se muestra el valor repetido.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda