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

468
Vistas
mongodb (agregación) - $búsqueda con el resultado de la búsqueda

Soy nuevo en el marco de agregación y tengo el siguiente problema/pregunta.

Mis colecciones se ven así:

usuarios

 _id: ObjectId('604caef28aa89e769585f0c4') baseData: { firstName: "max" username: "max_muster" ... ... }

actividadesFeed

 _id: ObjectId('604cb97c99bbd77b54047370') userID: "604caef28aa89e769585f0c4" // the user id activity: "604caf718aa89e769585f0c8" // the activity id viewed: false

actividades

 _id: ObjectId('604caf718aa89e769585f0c8') "baseData": { "userID":"604caef28aa89e769585f0c4", "type":0, "title":"Alessandro send you a friend request.", "description":"", "actionID":"604caef28aa89e769585f0c4" },

función agregada

 const response = ActivityFeed.aggregate([ { $match: { userID: ObjectId(args.user) }, }, { $lookup: { from: 'activities', localField: 'activity', foreignField: '_id', as: 'lookup_activities', }, }, { $unwind: '$activities' }, { $lookup: { from: 'users', localField: 'lookup_activities.baseData.actionID', foreignField: '_id', as: 'lookup_users', }, }, ]);

¿Cómo puedo hacer una búsqueda con el primer resultado de búsqueda?

Hice una búsqueda en la colección de actividades. Esta colección contiene la identificación para la segunda búsqueda baseData.userID. Pero con este enfoque no tengo ningún resultado con la segunda búsqueda.

La razón por la que me uní a la colección de actividades es que el ID de acción puede contener un ID de usuario o un ID de documento de otra colección. Depende del tipo en la colección de actividades.

¿Es posible en el marco de agregación realizar una búsqueda que dependa del tipo y de la búsqueda anterior?

Gracias de antemano.

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

0

Todo lo que hice fue arreglar tu agregación. Desenreda el campo incorrecto y asegúrese de que todos sus campos de ID sean ObjectId. Recomiendo encarecidamente usar MongoDB Compass para ayudar en su agregación si es nuevo en la función de agregación. Tienen una GUI de asistencia etapa por etapa que realmente hará su vida más fácil.

parque infantil mongo

 db.activitiesFeed.aggregate([ { $match: { userID: ObjectId("604caef28aa89e769585f0c4") }, }, { $lookup: { from: "activities", localField: "activity", foreignField: "_id", as: "lookup_activities", }, }, { $unwind: "$lookup_activities" }, { $lookup: { from: "users", localField: "lookup_activities.baseData.actionID", foreignField: "_id", as: "lookup_users", }, }, ])

Muestra utilizada

 db={ "users": [ { _id: ObjectId("604caef28aa89e769585f0c4"), baseData: { firstName: "max", username: "max_muster" } } ], "activitiesFeed": [ { _id: ObjectId("604cb97c99bbd77b54047370"), userID: ObjectId("604caef28aa89e769585f0c4"), activity: ObjectId("604caf718aa89e769585f0c8"), viewed: false } ], "activities": [ { _id: ObjectId("604caf718aa89e769585f0c8"), "baseData": { "userID": ObjectId("604caef28aa89e769585f0c4"), "type": 0, "title": "Alessandro send you a friend request.", "description": "", "actionID": ObjectId("604caef28aa89e769585f0c4") }, } ] }
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