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

262
Vistas
MongoDB cuenta un total de tres campos

Soy un principiante en MongoDB. Tengo 20 millones de documentos en una colección de MongoDB. Ejemplo de un solo documento:

ingrese la descripción de la imagen aquí

Quiero obtener el recuento total de tweets, el número de amigos y el número de seguidores de cada usuario_nombre_de_pantalla junto con el año de creación de la cuenta de cada usuario_nombre_de_pantalla.

Intenté esto:

 user_details_pipeline = [{ "$project": { "_id": 0, "user_mentions": 1, "user_followers_count": 1, "user_friends_count": 1, "user_account_creation": 1 } }, { "$unwind": "$user_mentions" }, { "$group": { "_id": "$user_mentions.screen_name", "count": { "$sum": 1 } } }, { "$sort": { "count": -1 } } ]

Pero esto no consulta el recuento de tweets, seguidores, amigos y la fecha de creación de la cuenta, solo cuántas veces se menciona a un usuario. Alguien puede ayudarme porfavor?

Ejemplo de una salida:

 {"user_screen_name": "BorisJohnson", "user_followers_count": 1000000, "user_friends_count": 50, "total_tweets": 50000, "user_account_creation": 2012}
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Básicamente, necesita usar la agregación de $group aquí.

 aggregate([ { $group: { _id: "$user_screen_name", user_followers_count: { $sum: "$user_followers_count" }, user_friends_count: { $sum: "$user_friends_count" }, total_tweets: { $sum: "$total_tweets" }, user_account_creation: { $first: "$user_account_creation" } }} ])
over 4 years ago · Santiago Trujillo Denunciar

0

Si su fecha no es un tipo de fecha (¡realmente debería serlo!), puede usar la siguiente consulta agregada usando $substr (para dividir el año) y $min (para obtener el año más antiguo)

 result = db.mycollection.aggregate([ {'$group': { '_id': '$user_screen_name', 'user_followers_count': {'$sum': '$user_followers_count'}, 'user_friends_count': {'$sum': '$user_friends_count'}, 'total_tweets': {'$sum': '$user_tweets_count'}, 'user_account_creation': {'$min': {'$substr': ['$user_account_creation', 26, 4]}} }}, {'$project': { '_id': 0, 'user_screen_name': '$_id', 'user_followers_count': 1, 'user_friends_count': 1, 'total_tweets': 1, 'user_account_creation': 1 }} ])
over 4 years ago · Santiago Trujillo Denunciar

0

Puedes hacer esto usando la agregación. Simplemente está proyectando los campos deseados, pero la agregación proporciona el operador $year (y otros) para devolver el componente deseado a partir de una fecha. Debe asegurarse de que las fechas se hayan almacenado como ISODate() .

 db.collection.aggregate( [ "$project" : { "_id": 0, "user_screen_name": 1, "user_followers_count": 1, "user_friends_count": 1, "total_tweets": 1, "user_account_creation": { "$year" : "$user_account_creation" } } ] )

Si no está usando ISODate() , puede usar el operador $dateFromString con formato específico para obtener un ISODate() y luego usarlo según sea necesario.

 { "$dateFromString": { "dateString": "06-15-2018", "format": "%m-%d-%Y" } }

Sin embargo, los especificadores de formato enumerados en la documentación solo funcionan con componentes numéricos y no con palabras (como "jueves" o "ene").

over 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