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

179
Vistas
Cuál es la mejor estrategia para agrupar usuarios enlazados

Hay gente en una ciudad. Una ciudad está representada por una colección mongodb llamada "ciudades". Las personas en la ciudad están solas o caminando juntas con otra persona en la misma ciudad.

El esquema es:

 { name: String, people: [ { name: String, status?: String, walkingWith?: String } ] }

Los campos "status" y "walkingWith" son los que me gustaría usar, si mi estrategia es correcta.

Aquí hay algunas entradas:

 var newyorkPeople = []; newyorkPeople[0] = {"name": "Jack", "status": "alone", "walkingWith": "none"}; newyorkPeople[1] = {"name": "James", "status": "meeting", "walkingWith": "Maria"}; newyorkPeople[2] = {"name": "Robert", "status": "meeting", "walkingWith": "Nina"}; newyorkPeople[3] = {"name": "Steven", "status": "alone", "walkingWith": "none"}; newyorkPeople[4] = {"name": "Maria", "status": "meeting", "walkingWith": "James"}; newyorkPeople[5] = {"name": "Nina", "status": "meeting", "walkingWith": "Robert"};

Luego entro en una nueva ciudad con gente en ella:

 db.cities.insert({"name": "New York", "people": newyorkPeople});

Ahora, el objetivo es facilitar que un cliente (interfaz) describa qué personas hay en esta ciudad. Y agruparlos. Primero muestra a todas las personas solitarias. Y luego las "parejas" que caminan juntas.

No estoy seguro de si es mejor hacer la agrupación en el backend o en el frontend (angular).

En backend (api) estoy usando express.js. La API podría simplemente devolver todo el documento de la ciudad a la interfaz. Y luego la interfaz sería responsable de clasificar/agrupar a las personas.

En ese caso, la estrategia en la que estoy pensando sería:

Recorra a las personas y solo imprima las personas solitarias. Los que están caminando con alguien, deben ir en otro arreglo. Así que el primer paso, mostrar a todas las personas solitarias, está cumplido.

Ahora, todavía necesito mostrar parejas. Primero necesito mostrar la pareja "James y Maria" y luego la pareja "Robert y Nina". ¿Debo crear una matriz para cada pareja? En el ejemplo anterior, debería crear 2 matrices.

Sin embargo, no estoy seguro de que esta sea la mejor estrategia. Estoy bien para modificar el esquema de base de datos o incluso dejar que el backend entregue a las personas agrupadas si alguien pudiera dar alguna buena sugerencia.

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puede utilizar el siguiente esquema (simplificado de los suyos)

 { name:Stirng, //name of the person city:String, //name of the city status:String, //status walkingWith:String //name of the person walking with }

El beneficio de usar este esquema es que puede facilitar sus consultas. Vamos a consultar su necesidad.

1- todas las personas en una ciudad

 db.city.aggregate([ {$group:{_id:"$city", people:{$push:"$name"}}} ])

2- todas las personas en una ciudad sola

 db.city.aggregate([ {$match:{status:"alone"}}, {$group:{_id:"$city", people:{$push:"$name"}}} ])

3- todas las personas en una ciudad reuniéndose con alguien

 db.getCollection('demos').aggregate([ {$match:{status:"meeting"}}, {$group:{_id:"$city", people:{$push:{name:"$name", walkingWith:"$walkingWith"}}}} ])
about 4 years ago · Santiago Trujillo 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