Home > Software engineering >  query mongo based on results of query
query mongo based on results of query

Time:06-11

I have this mongoose query:

let rE = await cR.find({myid: "xxxxxx"});

now this query will return multiple results, in which I then need to query another model based off of the rE.class_id, which is returned through rE, the query above. So I do this:

let cla = await Cl.find({_id: rE.class_id});

however, that obviously doesn't work because rE.class_id gets returned as multiple objects, so placing rE.class_id just wont work. How can I get this to work?

CodePudding user response:

If you are trying to get all Cl models where _id = (classIds of models rE) Then you can try this one:

let rE = await cR.find({myid: "xxxxxx"});
const classIds = rE.map(r => r.classId);
let cla = await Cl.find({_id: {$in: classIds}});

CodePudding user response:

const data = await cR.aggregagte([
  {
    '$match': {
       myid: "xxxxxx" 
    }
  },
  {
    '$lookup': {
      'from': 'rE', 
      'localField': 'authorId', 
      'foreignField': '_id', 
      'as': 'cla'
    }
  }
]);
  • Related