Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

461
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!