Query nidificata Mongoose su modello per campo del modello di riferimento

Sembra che ci sia un sacco di domande / risposte su questo argomento su StackOverflow, ma non riesco a trovare una risposta esatta da nessuna parte.

Ciò che ho:

Ho modelli di società e persone:

var mongoose = require('mongoose'); var PersonSchema = new mongoose.Schema{ name: String, lastname: String}; // company has a reference to Person var CompanySchema = new mongoose.Schema{ name: String, founder: {type:Schema.ObjectId, ref:Person}}; 

Ciò che di cui ho bisogno:

Trova tutte le aziende che hanno fondato persone con cognome “Robertson”

Quello che ho provato:

 Company.find({'founder.id': 'Robertson'}, function(err, companies){ console.log(companies); // getting an empty array }); 

Poi ho pensato che Person non fosse incorporato ma referenziato, quindi ho usato popolamento per popolare il fondatore-Person e poi ho provato a usare find con il cognome ‘Robertson’

 // 1. retrieve all companies // 2. populate their founders // 3. find 'Robertson' lastname in populated Companies Company.find({}).populate('founder') .find({'founder.lastname': 'Robertson'}) .exec(function(err, companies) { console.log(companies); // getting an empty array again }); 

Posso ancora interrogare le società con l’ID della persona come una stringa. Ma non è esattamente quello che voglio, come puoi capire

 Company.find({'founder': '525cf76f919dc8010f00000d'}, function(err, companies){ console.log(companies); // this works });